2012-06-11 69 views
0

我想創建一個用於預先檢查值的程序。用戶將向UI輸入單個輸入(wbslement no)。我想要將該記錄插入到System中。在插入數據庫之前,我想檢查它是否存在於表中。如果它出現在表中,那麼它不應該將記錄插入到表中,如果它不存在於數據庫中,那麼它應該插入。預先檢查數據插入

當前在加載時間我正在從表中取出所有記錄,然後我嘗試插入到系統中。

在我的代碼

它插入值無論如何

  CrCon = new SqlConnection(spcallloggin); 
      CrCon.Open(); 
      CrCmd = new SqlCommand(); 
      CrCmd.Connection = CrCon; 

      CrCmd.CommandText = "GetOraderNumberDetail"; 
      CrCmd.CommandType = CommandType.StoredProcedure; 

      sqladpter = new SqlDataAdapter(CrCmd); 
      ds = new DataSet(); 
      sqladpter.Fill(ds); 
      for (int count = 0; count < ds.Tables[0].Rows.Count; count++) 
      { 

       if (txtwbs.Text == ds.Tables[0].Rows[count][0].ToString()) 
       { 
          Lbmsg.Visible = true; 
          Lbmsg.Text = "Data Already Exists !"; 
          count = count + 1; 
       } 
       else 
       { 
         insetreco(val); 
       } 
      } 
+0

請檢查這些鏈接進行更改,你會得到好的結果 http://stackoverflow.com/questions/2273815/if- exists-insert-update-delete-for-optimization http://stackoverflow.com/questions/5599874/how-can-i-check-for-duplicates-before-inserting-into-a-table - 當-插入逐-S – Sunny

+0

我有單表。那麼如何在插入 –

回答

0

最好是直接在存儲過程中檢查。

IF NOT EXISTS(SELECT * FROM [TABLE] WHERE unique_field = "value of the txtwbs") 
BEGIN 
    INSERT INTO [TABLE] 
    VALUES (value1, value2, value3,...) 
END 

你也可以改變你的代碼如下:

bool doesExist; 
for (int count = 0; count < ds.Tables[0].Rows.Count; count++) 
{ 

    if (txtwbs.Text == ds.Tables[0].Rows[count][0].ToString()) 
    { 
      Lbmsg.Visible = true; 
      Lbmsg.Text = "Data Already Exists !"; 
      doesExist = true; 
      break; 
    } 
} 
if(!doesExist) 
    insetreco(val); 
+0

之前檢查重複項?我們如何在插入語句中寫入cluase? –

+0

相應更新 – k0stya

0

你可以使用DataView's RowFilter查詢內存表:

Dataview dv = ds.Tables[0].DefaultView ; 
dv.RowFilter="wbslement_no="+number; 
if(dv.ToTable().Rows.Count==0) 
{ 
     //insert into database 
} 
else 
{ 
     Lbmsg.Visible = true; 
     Lbmsg.Text = "Data Already Exists !"; 
} 

或者

而不是兩個獨立的調用數據庫,你可以檢查你的存儲專業內的重複cedure。

0

只需在表格本身上創建一個「唯一」鍵約束。 MySQL已經有一個現有的構造來處理這個問題,所以在你的代碼中沒有意義。

0

檢查:

根據您的需要

IF EXISTS (SELECT 1 FROM targetTable AS t 
WHERE t.empNo = @yourEmpNo 
    AND t.project = @yourProject) 
BEGIN 
    --what ever you want to do here 
END 
ELSE 
BEGIN 
    INSERT INTO yourTable (empno, name, project) 
    SELECT @empno, @name, @project 
END