我已经定义了2个数据集和2个dataAdapter(每个数据集一个)。在创建之后,对于2个dataAdapters中的每一个,我定义了一个SqlCommandBuilder。一切都很好,直到这里。 我可以使用dataAdapter1.Update(dataSet1)从数据库添加,修改,擦除。但不按此顺序:擦除,添加,修改。
以下是第一个数据集dataAdapter和sqlCommandBuilder的代码:
string sql = "SELECT * From localitati";
da1 = new System.Data.SqlClient.SqlDataAdapter(sql, con);
da1.Fill(ds1, "localitati");
cmdBuilder1 = new SqlCommandBuilder(da1);
第二个:
sql = "SELECT * From sucursale";
da2 = new System.Data.SqlClient.SqlDataAdapter(sql, con);
da2.Fill(ds2, "sucursale");
//face automat select, insert ,etc !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
cmdBuilder2 = new SqlCommandBuilder(da2);
任何想法为什么会发生这种情况?
答案 0 :(得分:12)
您提供的信息毫无用处。但我可以解释错误的含义。
以ADO.Net编写的每个更新命令的格式为:
Update col1, col2 where col1=col1value AND col2=col2value
ADO.Net保留从数据库中选择列时的值。当它执行更新时,条件是提交时没有任何列发生更改。
您看到错误的原因是因为数据库行在执行select和调用da2.UpdateChanges(ds2)
之间发生了变化。如果您查看逻辑,可能已将行的值选择为两个单独的数据集(或两个不同的线程),并在执行选择后对其执行更新。