从datagridview更新到数据库方法

时间:2021-06-09 09:06:51

从datagridview更新到数据库从网上找的方法大多是datagridview绑定后更新到数据库。实际操作中发现存在诸多限制:

如要求必须有主键、还要主键在操作的语句中。晕,太不灵活了

常见代码:

               SqlCommandBuilder cmd = new SqlCommandBuilder();
                string str="select name,使命感,团队意识,工作能力,学习力,组织原则 from votexinxiinfo";
                Conn.getcon();   //打开与数据库的连接
                SqlDataAdapter da = new SqlDataAdapter(str, Conn.getcon());  //创建一个SqlDataAdapter对象,并获取指定数据表的信息
                DataSet ds = new DataSet(); //创建DataSet对象
                da.Fill(ds, "table1");
                cmd.DataAdapter = da;
                DataTable dt = new DataTable();
                dt = (DataTable)dataGridView1.DataSource;
                da.Update(dt);
                Conn.con_close();

后来发现通过循环加上sql语句控制更新

for (int i = 0; i < this.dataGridView1.RowCount - 1; i++)
                {
                    string a = dataGridView1.Rows[i].Cells[0].Value.ToString();
                    string b = dataGridView1.Rows[i].Cells[1].Value.ToString();
                    string c = dataGridView1.Rows[i].Cells[2].Value.ToString();
                    string d = dataGridView1.Rows[i].Cells[3].Value.ToString();
                    string p = dataGridView1.Rows[i].Cells[4].Value.ToString();
                    string q = dataGridView1.Rows[i].Cells[5].Value.ToString();
                    string str1 = "update votexinxiinfo set 使命感='" + b + "',团队意识='" + c + "',工作能力='" + d + "',学习力='" + p + "',组织原则='" + q + "'where name='"+a+"'and 时间='"+string.Format("{0:Y}", DateTime.Now)+"'";                    Conn.getsqlcom(str1);
                }
                MessageBox.Show("评价已提交完成。", "提示");

因为不加限定词直接更新会把原数据覆盖,所以加上限定词'where name='"+a+"'and 时间='"+string.Format("{0:Y}", DateTime.Now)+"'