Dot-Net

.NET 表適配器:獲取與填充?

  • May 22, 2014

在處理來自數據庫的數據(強類型或其他類型)時,我似乎總是使用 Get,我從來沒有真正需要使用 Fill,儘管在提取和更新數據時我可以很容易地使用 Fill 而不是 get。

任何人都可以就每種方法的含義和陷阱提供指導嗎?

在什麼情況下最好使用其中一種?

任何性能影響?

提前感謝您的回答!我愛這個社區!

如果表已經包含數據,則 Fill 的一個特殊問題是,例如,當查詢返回主鍵已經在表中的行時,您可能會遇到唯一索引異常。

我使用過很多數據綁定的 Windows 窗體程式碼,其中編輯控制項或窗體上的網格綁定到表,然後使用填充將更多行從數據庫載入到表中。這可能會導致一些有趣的事件觸發序列和經驗中的間歇性錯誤。

使用 Get 檢索具有新結果的新表,然後將表單重新綁定到新表可以避免這種情況。

我懷疑兩者之間存在很大的性能差異,除非在具有現有行的表上使用 Fill。在這種情況下,表的 BeginLoadData 方法將被忽略,這通常會延遲事件觸發和索引重建直到結束。

使用 Fill 可以很好地調試異常,因為可以查詢傳遞給方法的 DataTable 以獲取更多詳細資訊。Get 不會在相同的情況下返回。

尖端:

  • DataTable.GetErrors() 返回錯誤的 DataRow 實例數組
  • DataRow.RowError 包含行錯誤的描述
  • DataRow.GetColumnsInError() 返回錯誤的 DataColumn 實例數組

引用自:https://stackoverflow.com/questions/172436