DataGridView更新
使用DataGridView和数据库绑定,新增保存删除都没有问题但是有点小意外,例如:
我在DataGridView写入两条数据,主键的值分别为1和2,保存到数据库成功。然后修改DataGridView,把刚才的主键为1的数据主键值改为2,2的改为1,保存,数据库返回错误说 主键重复。
数据绑定代码:
OleDbDataAdapter myAdapter;
DataSet myDataSet = new DataSet();
con.Open();
myAdapter = new OleDbDataAdapter(comd, con);
myAdapter.Fill(myDataSet, "TableName");
myDataGridView.DataSource = myDataSet.Tables["TableName"];
con.Close();
保存部分代码:
command = new OleDbCommand(sql, con);
OleDbDataAdapter oda = new OleDbDataAdapter(command);
OleDbCommandBuilder cmdblr = new OleDbCommandBuilder();
cmdblr.DataAdapter = oda;
DataTable dt = (DataTable)myDataGridView.DataSource;
oda.Update(dt);
我试了把DataGridView重新按主键排序,没有解决问题。感觉是DataSource绑定产生的问题。
请各位帮忙看看问题出在哪,或者有什么办法避开这个问题。谢谢了。 --------------------编程问答-------------------- 手动更新,先删除,再插入。 --------------------编程问答-------------------- 你这个做法跟DataGridView是一点关系都没有,你把想1改成2,但是2已经被占用了啊,数据库肯定不让改的,你必须先,1改到3,2改到1,1改到2,3是一个没有被用掉的主键 --------------------编程问答-------------------- 2楼说的是
必须用一个没有用过的主键来过渡一下 --------------------编程问答-------------------- 就是你自己的错误啊!同意LS的看法! --------------------编程问答--------------------
这个说的有道理,但是我现在的做法除了这种情况其他的数据库操作都不用我自己管。如此说来只有这种情况要我自己手动控制,是这个意思吧。但是这种情况有如何判断出来呢。 --------------------编程问答-------------------- 问题解决
dt.AcceptChanges();
共勉 --------------------编程问答-------------------- 你这个做法跟DataGridView是一点关系都没有,你把想1改成2,但是2已经被占用了啊,数据库肯定不让改的,你必须先,1改到3,2改到1,1改到2,3是一个没有被用掉的主键
顶
补充:.NET技术 , C#