从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)+"'