簡體   English   中英

C#數據庫接口檢查SQL重復項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM