【问题标题】:DataTable row with changed data具有更改数据的 DataTable 行
【发布时间】:2013-05-07 12:14:01
【问题描述】:

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

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

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

我该怎么做?

【问题讨论】:

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


    【解决方案1】:

    您可以使用 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 的原因之一)

    See the MSDN article on DataRowVersion enum

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 2018-07-20
      • 2014-04-10
      相关资源
      最近更新 更多