Не удаётся вставить повторяющийся ключ в базу данных
Создаю приложение для зоомагазина. При попытке добавления новой записи возникает исключение, мол, невозможно добавить повторяющийся ID.
Текст запроса - "Insert into dbo.[Другие товары] ([id_Товара], [Название], [Цена]) VALUES ('{0}', '{1}', '{2}')", ID, Name, Price Запрос рабочий, проверен напрямую в SQL
Генерация ID происходит так textBox1.Text = Guid.NewGuid().ToString();.
То есть, ни о каком повторяющимся идентификаторе и речи быть не может. Следует также сказать, что запись в таблицу добавляется, но исключение всё равно возникает.
Код обработчика события:
private void btn_addData_Click(object sender, EventArgs e)
{
textBox1.Text = Guid.NewGuid().ToString();
if (dal.SaveNewProduct(textBox1.Text, txbx_productName.Text.Trim(), decimal.Parse(txbx_productPriсe.Text)))
this.DialogResult = DialogResult.OK;
else
this.DialogResult = DialogResult.No;
}
Код метода:
public bool SaveNewProduct(string ID, string Name, decimal Price)
{
string queryForAddInProduct = string.Format("Insert into dbo.[Другие товары] ([id_Товара], [Название], [Цена]) VALUES ('{0}', '{1}', '{2}')", ID, Name, Price);
bool flagresult = false;
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(queryForAddInProduct, connection);
try
{
connection.Open();
command.ExecuteNonQuery();
if (command.ExecuteNonQuery() == 1)
flagresult = true;
connection.Dispose();
}
catch (SqlException ex)
{
MessageBox.Show(ex.ToString());
}
return flagresult;
}
}
Ответы (1 шт):
Так вы два раза один и тот же запрос выполняете, один раз без проверки результата, а второй раз уже с проверкой:
command.ExecuteNonQuery(); // 1-й раз
if (command.ExecuteNonQuery() == 1) // 2-й раз
flagresult = true;
Первое исполнение проходит успешно, а но втором уже выходит исключение. Поэтому и запись в базу добавляется и ошибка выходит.