DataTable行包含已更改的数据

时间:2013-05-07 12:14:01

标签: sql-server vb.net sql-server-2008 c#-4.0

我正在开发一个基于桌面的应用程序。在该应用程序中,我必须只获得修改的行以在我的数据库中保存/更新。因为我使用了以下代码:

DataTable modifiedTable = dt.GetChanges(DataRowState.Modified);

没关系。但在这里,我只需要更改那些列。我不希望该列没有任何变化。所以,我可以记录原始值以及修改/新值。 (ms sql中的改变数据捕获(CDC)的提取器)。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用OriginalValue和当前版本的DataRow列值,然后检查它们是否不同

For Each row in table.Row
    For Each col in table.Columns
       Dim original = row[col.ColumnName] = row[col.ColumnName, DataRowVersion.Original].ToString()
       Dim  changed = row[col.ColumnName] = row[col.ColumnName, DataRowVersion.Current].ToString()

       ' Compare and prepare the SQL command to update only this changed column'
    Next
Next

但现在你面临一个最大的问题。您需要编写代码以仅更新该列。
(顺便说一下,这是使用SqlDataAdapter和SqlCommandBuilder的原因之一)

See the MSDN article on DataRowVersion enum