2015-04-05 76 views
0

我在具有5,000多行的SQL數據庫(本地網絡上)中有一個表。這些數據被加載到我正在開發的客戶端應用程序中的內存數據表中,供最終用戶查看,搜索和操作記錄。使用對內存數據表的更改更新SQL表

我的問題是一旦用戶完成操作數據,將其寫回SQL表的最佳方式是什麼?我可以清除SQL表並將整個內存中的數據發送到SQL服務器,但由於記錄數量很多,這看起來像是一個狡猾和低效的過程。

有沒有人有想到的解決方案?例如,以某種方式跟蹤由用戶更改的記錄並僅通過SQL查詢更新那些記錄?

什麼是最好的處理方法?如果有必要,我很樂意徹底重新考慮我的方法。

+0

[SqlDataAdapter.Update](https://msdn.microsoft.com/en-us/library/z1z2bkx2(V = vs.110)的.aspx)和約_tracking changes_不要重新發明輪子。 [DataRow.RowState](https://msdn.microsoft.com/en-us/library/system.data.datarow.rowstate(v = vs.110).aspx) – Steve 2015-04-05 08:45:02

+1

您好Steve,感謝您的指導。這是我第一次做這樣的事情,但聽起來像我需要的東西。再次感謝 – tpag26 2015-04-05 08:50:45

+0

有很多記錄,DataAdapter可能會很慢。如果遇到瓶頸問題,考慮將整個DataTable保存到一個temportary表(例如,從YourTableName中選擇* Into #MyTemp),使用SqlBulkCopy將數據保存到它,然後使用MERGE語句讓數據庫應用您的更改, – 2015-04-05 10:37:01

回答

0

SqlDataAdapter.Update和有關跟蹤更改不會重新發明輪子。 DataRow.RowState - Steve