[英]C# Database Interface Checking SQL Duplicates
好的,我為汽車經銷商建立了一個庫存系統,該系統具有向系統中添加新汽車的能力,現在,我需要添加一個功能,如果經銷商輸入數據庫中已經存在的汽車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)
現在,如果您第二次插入相同的密鑰,則數據庫將引發異常。
您需要捕獲此異常,並很好地告訴用戶他做錯了什么。
如果您想要一個舒適的用戶界面,則可能希望從數據庫中加載所有現有的汽車注冊信息,並告訴他在用戶在所有其他字段中鍵入之前,此提示已存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.