如何为多个SqlDataAdapter插入重用DataTable

时间:2015-08-18 22:09:41

标签: c# .net ado.net

如果DataTable加载了一些数据,如何使用不同的SqlDataAdapter.Update()方法重复执行多次插入到不同的SQL Server数据库表中?

使用DataTable将记录插入表1后,不同的SqlDataAdapter将不会将数据插入表2中,Update()方法总是返回0而不会抛出异常。

我尝试使用Copy()的{​​{1}}和RejectChanges()方法,但它从不在表2中插入数据。

一些代码:

DataTable

3 个答案:

答案 0 :(得分:0)

看看这篇MSDN帖子,了解DataRow.RowState的概念:https://msdn.microsoft.com/en-us/library/ww3k31w0(v=vs.110).aspx

当您在第一个SqlAdapter上调用Update时,所有行都标记为Unchanged,后续Update调用将不再考虑它们。

您可以尝试通过从其中一列读取值并设置相同的值来“触摸”每一行。也许这会导致RowState切换到Modified,以便第二个Update操作再次对所有行起作用。

答案 1 :(得分:0)

也许在第二次调用Update之前尝试在每个DataRow上调用SetAdded?

https://msdn.microsoft.com/en-us/library/system.data.datarow.setadded%28v=vs.110%29.aspx

答案 2 :(得分:0)

通过保持原始DataTable不变并解决使用DataTable.Copy()方法创建的每个必需更新的副本而得到解决...如果发布了更好的答案,我会接受而不是...... < / p>