Я получаю исключение SQL при попытке вставить дубликат, но ошибка SQL не отправляется в окно сообщения.Я вижу ошибку в отладке.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using static AccountManager.productinsert.BusinessLogic;
namespace AccountManager
{
public partial class ProductAdd : Form
{
public ProductAdd()
{
InitializeComponent();
}
public void CleartextBoxes1()
{
ProductId.Clear();
ProductName.Clear();
ProductPrice.Clear();
}
private void BtnClose_Click(object sender, EventArgs e)
{
this.Close();
}
private void BtnSubmit_Click(object sender, EventArgs e)
{
try
{
var product = new ProductDetails();
product.ProductId = ProductId.Text;
product.ProductName = ProductName.Text;
product.ProductPrice = ProductPrice.Text;
AddProduct(product);
MessageBox.Show("Product Created!");
CleartextBoxes1();
}
catch (SqlException)
{
MessageBox.Show("Product Already Exists");
}
}
}
}
Ошибка отладки:
Исключение: «System.Data.SqlClient.SqlException» в AccountManager.exe.("Нарушение ограничения UNIQUE KEY 'UQ__Products__B40CC6CC7010A856'. Невозможно вставить повторяющийся ключ в объект 'dbo.Products'. Значение дублирующего ключа равно (1). Оператор был прерван.") System.Data.SqlClient.SqlException
Код для добавления товара по запросу
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AccountManager
{
class productinsert
{
public class BusinessLogic
{
public static void AddProduct(ProductDetails details)
{
using (SqlConnection openCon = new SqlConnection("Data Source=.;Initial Catalog=AccountMGR;Integrated Security=True;"))
{
var statement = "insert into Products(" +
" ProductId, ProductName, Price)" +
" values(" +
" @ProductId," +
" @ProductName," +
" @Price)";
using (SqlCommand queryInsert = new SqlCommand(statement))
{
queryInsert.Connection = openCon;
queryInsert.Parameters.Add("@ProductId", SqlDbType.VarChar, 30).Value = details.ProductId;
queryInsert.Parameters.Add("@ProductName", SqlDbType.VarChar, 30).Value = details.ProductName;
queryInsert.Parameters.Add("@Price", SqlDbType.VarChar, 30).Value = details.ProductPrice;
openCon.Open();
try
{
queryInsert.ExecuteNonQuery();
}
catch (SqlException)
{
}
}
}
}
public class ProductDetails
{
public string ProductId { get; set; } = "";
public string ProductName { get; set; } = "";
public string ProductPrice { get; set; } = "";
}
}
}
}