0

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

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

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

我该怎么做呢?

4

1 回答 1

0

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

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 的原因之一)

请参阅有关 DataRowVersion 枚举的 MSDN 文章

于 2013-05-07T12:22:58.380 回答