2013-11-02 122 views
0
 private void Save_Click(object sender, EventArgs e) 
    { 
     string strconn = @"Server=.\SQLEXPRESS;initial catalog=PharmacyV2;integrated security=true;"; 
     SqlConnection conn = new SqlConnection(strconn); 
     //SqlCommand cmd = new SqlCommand(); 
     DataSet ds = new DataSet(); 
     conn.Open(); 
     SqlDataAdapter da = new SqlDataAdapter("select * from Units",conn); 
     da.Fill(ds, "Units"); 
     bool found = false; 
     for (int i = 0; i < dataGridView1.Rows.Count; i++) 
     { 

      for (int j = 0; j < ds.Tables["Units"].Rows.Count; j++) 
      { 


       if (ds.Tables["Units"].Rows[j][0].ToString() == dataGridView1.Rows[i].Cells[0].Value.ToString()) 
       { 
        found = true; 
        break; 
       } 

      } 

      if (found==false) 
      { 

       SqlCommand cmd; 
       cmd = new SqlCommand("insert into Units (Unit_name) values (@name)", conn); 
       cmd.Parameters.AddWithValue("@name", dataGridView1.Rows[i].Cells[0].Value.ToString()); 
       cmd.ExecuteNonQuery(); 
       MessageBox.Show("تمت الاضافه"); 


      } 
     } 
     conn.Close(); 

    } 

我的程序從DataGridView的每個元素比較從UINT表從數據庫中每一個元素,以防止數據庫 重複,如果從datagridvoew元素不在數據庫 實現插入類似元素UINT表聲明 爲什麼程序不會將任何數據插入數據庫? (不執行插入語句)防止重複的數據庫條目

+0

您有任何錯誤或異常消息? –

+0

'dataGridView1.Rows.Count'的值是什麼?放置一個斷點並檢查它 – sll

+0

並且配置那個SqlConnection對象,即:使用(SqlConnection conn = new SqlConnection(strconn)){}' – Stefan

回答

0

初始化您發現變量設置爲false內您的第一個for循環:

found = false;

,這樣它會被設置爲初始狀態每次迭代。否則如果一旦設置爲true,則總是變爲true.thats爲什麼你的插入語句沒有得到執行。

所以,你的for循環應該是這樣的:

for (int i = 0; i < dataGridView1.Rows.Count; i++) 
    { 
     found = false; 

     for (int j = 0; j < ds.Tables["Units"].Rows.Count; j++) 
     { 


      if (ds.Tables["Units"].Rows[j][0].ToString() == dataGridView1.Rows[i].Cells[0].Value.ToString()) 
      { 
       found = true; 
       break; 
      } 

     } 

     if (found==false) 
     { 

      SqlCommand cmd; 
      cmd = new SqlCommand("insert into Units (Unit_name) values (@name)", conn); 
      cmd.Parameters.AddWithValue("@name", dataGridView1.Rows[i].Cells[0].Value.ToString()); 
      cmd.ExecuteNonQuery(); 
      MessageBox.Show("تمت الاضافه"); 


     } 
    } 
0

你怎麼樣查詢數據庫來檢查條目是否存在?

var unitName = dataGridView1.Rows[i].Cells[0].Value.ToString(); 
var command = new SqlCommand("SELECT COUNT(*) FROM Units WHERE Unit_name = @name", connection); 
command.Parameters.AddWithValue("@name", unitName); 

int result = (int)command.ExectureScalar(); 

if(result == 0) // no entry 
{ 
    //Insert. 
}