Ale*_*lex 0 c# sql-server sqlcommandbuilder dataadapter
我已经定义了2个数据集和2个dataAdapters(每个数据集一个).在创建之后,对于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);
Run Code Online (Sandbox Code Playgroud)
第二个:
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);
Run Code Online (Sandbox Code Playgroud)
任何想法为什么会发生这种情况?
Spe*_*nce 12
您提供的信息毫无用处.但我可以解释错误的含义.
在ADO.Net中编写的每个更新命令都具有以下形式:
Update col1, col2 where col1=col1value AND col2=col2value
Run Code Online (Sandbox Code Playgroud)
从数据库中选择列时,ADO.Net会保留列的值.执行更新时,条件是提交时没有任何列已更改.
您看到错误的原因是因为在执行select和调用之间数据库行已更改da2.UpdateChanges(ds2).如果您查看逻辑,可能已将行的值选择为两个单独的数据集(或两个不同的线程),并在执行select后对其执行更新.