c#数据库接口检查SQL重复
本文关键字:SQL 重复 检查 接口 数据库 | 更新日期: 2023-09-27 18:11:52
好的,我为一个汽车经销商建立了一个库存系统,它有能力向系统添加新车,现在我需要添加一个功能,如果经销商在一个汽车REG类型已经在数据库中,它会弹出一个错误消息框。
我该怎么做呢?
下面是代码:MySqlCommand cmd = new MySqlCommand();
String carManufacture = textBoxCARManufac.Text.ToUpper();
String carModel = textBoxCARModel.Text.ToUpper();
String carColour = textBoxCarBodColo.Text.ToUpper();
int carMileage = int.Parse(textBoxCArMillea.Text);
int carYearReg = int.Parse(textBoxCARREGYear.Text);
String carReg;
String fuel = textBoxCARFuel.Text.ToUpper();
int carEng = int.Parse(textBoxCarEngSize.Text);
float carprice = float.Parse(textBoxCARPrice.Text);
float carTaxcost = float.Parse(textBoxCArTax.Text);
carReg = Regex.Replace(textBox1CARregplate.Text, " ", "").ToUpper();
try
{
cmd.CommandText = "INSERT INTO stockList (Manufacturer,CarModel,BodyColour,AquiredMileage,RegistartionYear,CarRegistration,FuelType,EngineSize,Price,CarTaxCost12Months) VALUES (@Manufacturer, @carModel, @carColour, @carMileage, @carYearReg, @carReg, @fuel, @carEng, @carPrice, @carTaxCost)";
cmd = SDS1.Prepare(cmd);
cmd.Parameters.AddWithValue("@Manufacturer", carManufacture);
cmd.Parameters.AddWithValue("@carModel" , carModel);
cmd.Parameters.AddWithValue("@carColour" , carColour);
cmd.Parameters.AddWithValue("@carMileage" , carMileage);
cmd.Parameters.AddWithValue("@carYearReg" , carYearReg);
cmd.Parameters.AddWithValue("@carReg" , carReg);
cmd.Parameters.AddWithValue("@fuel" , fuel);
cmd.Parameters.AddWithValue("@carEng" , carEng);
cmd.Parameters.AddWithValue("@carPrice" , carprice);
cmd.Parameters.AddWithValue("@carTaxCost", carTaxcost);
SDS1.Query(cmd);
}
catch (Exception ex)
{
Console.WriteLine("ERROR: " + ex);
}
}
我建议您首先确保数据库中没有两个相同的汽车注册。
我假设,在您的场景中,汽车注册是唯一的键。您可以在表上创建一个unique key
约束。由于这可能是表中的定义列,因此应该在汽车注册列上创建一个所谓的primary key
:
ALTER TABLE stockList
ADD CONSTRAINT PK_stockList_CarRegistration PRIMARY KEY (CarRegistration)
现在,如果第二次插入相同的键,数据库将抛出异常。
你需要捕获这个异常,并告诉用户他做错了什么。
如果您想要一个舒适的UI,您可能希望从数据库中加载所有现有的汽车注册,并告诉他在用户键入所有其他字段之前,这个注册已经存在。