我正在开发一个基于桌面的应用程序。在该应用程序中,我必须只获取修改后的行才能在我的数据库中保存/更新。为此,我使用了以下代码:
DataTable modifiedTable = dt.GetChanges(DataRowState.Modified);
没关系。但是在这里我只需要那些被改变的列。我不想要没有任何变化的那一列。所以,我可以记录原始值以及修改/新值。(像 ms sql 中的更改数据捕获 (CDC) 之类的提取器)。
我该怎么做呢?
我正在开发一个基于桌面的应用程序。在该应用程序中,我必须只获取修改后的行才能在我的数据库中保存/更新。为此,我使用了以下代码:
DataTable modifiedTable = dt.GetChanges(DataRowState.Modified);
没关系。但是在这里我只需要那些被改变的列。我不想要没有任何变化的那一列。所以,我可以记录原始值以及修改/新值。(像 ms sql 中的更改数据捕获 (CDC) 之类的提取器)。
我该怎么做呢?
您可以使用 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 的原因之一)