0

我已经定义了 2 个数据集和 2 个数据适配器(每个数据集一个)。创建后,我为 2 个数据适配器中的每一个定义了一个 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);

任何想法为什么会这样?

4

1 回答 1

12

您提供的信息毫无用处。但我可以解释错误的含义。

用 ADO.Net 编写的每个更新命令都具有以下形式:

Update col1, col2 where col1=col1value AND col2=col2value

当从数据库中选择列时,ADO.Net 会保留列的值。当它执行更新时,条件是您提交时没有任何列发生更改。

您看到错误的原因是在您执行 select 和 call 之间数据库行发生了变化da2.UpdateChanges(ds2)。如果您查看逻辑,可能您已将行的值选择到两个单独的数据集中(或在两个不同的线程中)并在执行选择后对其执行更新。

于 2010-11-29T20:11:55.453 回答