У меня есть база (Номера автомобилей) и я хочу чтобы при добавлении уже существующего номера выходила ошибка, а не добавлялось в таблицу.
Вариантов два:
Реализация на клиенте – возможный вариант, но зачем писать какой-то код, если можно не писать и проверять на сервере? )
Я рекомендую поставить ограничение на стороне сервера.
Для этого в SQL-движках предусмотрен механизм constraint (ограничений).
Вы не пишете, какая конкретно у вас БД - допустим, это MS SQL Server, как наиболее типичный выбор для .net стека.
В SQL Server unique constraint реализуются созданием unique index.
Проверка на стороне сервера:
ALTER TABLE YourTable
ADD CONSTRAINT UC_ConstraintName UNIQUE (ColumnName);
Вообще, хотелось бы понимать, чем вы пользуетесь, в качестве контекста БД в коде.
Как вариант, можете воспользоваться, LinqToSQL:
string connectionString = @"ваша строка подключения";
DataContext db = new DataContext(connectionString);
// не обязательно bool, здесь может быть, например, и выброс исключения...
public bool IsExist(string carNumber)
{
// не бывает автомобиля без номера (если не притягивать за уши, конечно)
var car = (from car in db.GetTable<Cars>()
where car.LicensePlate == carNumber // licensePlate - номер авто
select car).FirstOrDefault();
if (car == null)
{
return false;
}
return true;
}
Или написав параметризированный SQL-запрос на проверку:
using (var command = new SqlCommand())
{
command.Connection = new SqlConnection("ваша строка подключения");
command.CommandText = "select LicencePlate from dbo.Cars where dbo.Cars.LicencePlate = @MyPlate";
command.Parameters.AddWithValue("@MyPlate", "а777аа"); // пример
var reader = command.ExecuteReader();
// а далее читаете из ридера данные. Если похожих номеров нет, то ридер вернет null(емнип).
// Ну и в зависимости от результата уже можно делать инсерт в базу (или нет)
}
UPD. Если Вам необходимо вносить сразу большое количество номеров в БД, то вам действительно нужно посмотреть в сторону SQL Server unique constraint, как верно указал @A K. Это удобнее делать на стороне БД.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей