2013-05-07 53 views
0

我正在開發一個基於桌面的應用程序。在那個應用程序中,我只能得到修改的行來保存/更新我的數據庫。爲此我使用了以下代碼:數據錶行更改數據

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

這很好。但在這裏,我只需要那些已更改的列。我不希望那個沒有任何改變的專欄。所以,我可以記錄原始值以及修改/新值。 (像ms sql中的更改數據捕獲(CDC))。

我該怎麼做?

回答

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