2013-11-02 125 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. 
}