【发布时间】:2013-04-25 12:17:21
【问题描述】:
好的,我正在为能够向系统添加新车的汽车经销商建立一个库存系统,现在我需要添加一个功能,如果经销商输入的汽车 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 CONSTRAINT(假设您使用的是 MS SQL Server) -
在数据库中的该字段上创建唯一约束。会抛出异常。
-
注册号是主键,这将是唯一的,当您输入重复项时,它会在控制台中打印出现 sql 错误,因此确实会看到重复项。但我希望以消息框的形式出现错误
标签: c# sql exception duplicates