Решение один: добавить ограничение на поле (столбец) Категория - или что-то ваше поле называется в базе данных и поймать исключение, когда оно уже существует в вашей базе данных.
Решение второе: проверьте внутри вашего запроса, существует ли значение.
Оба решения могут бросить исключение или один может использовать возвращаемое значение SqlCommand.ExecuteNonQuery()
, который является количество затронутых строк, также:
protected void btnAdd_Click(object sender, EventArgs e)
{
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "IF NOT EXISTS(SELECT Category FROM Categories WHERE [email protected]) INSERT INTO Categories VALUES(@Category)";
cmd.Parameters.AddWithValue("@Category", txtName.Text);
int affectedRows = cmd.ExecuteNonQuery();
con.Close();
if (affectedRows == 1) //1 record was updated, thus we can conclude that the record was successfully inserted
{
Response.Redirect("/Admin/Categories/Add.aspx");
//Perform other logic ...
}
Помните, когда вы размещаете ограничение на поле Category
, он будет бросить исключение до if (affectedRows == 1)
.
Добавьте уникальное ограничение в столбец и проглотите исключение или добавьте логику 'if not exits' в ваш SQL-код вставки. Зависит от используемой БД - добавьте тег, чтобы идентифицировать его. –