问题 .NET表适配器:获取与填充?


我总是使用Get来处理数据库中的数据(强类型或其他),我从来没有真正需要使用Fill,尽管我很容易使用Fill而不是在拔出和更新数据时获取。

任何人都可以提供有关每种方法的含义和陷阱的指导吗?

在什么情况下最好使用一个或另一个?

任何性能影响?

在此先感谢您的答案!我爱这个社区!


6620
2017-10-05 18:45


起源



答案:


Fill的一个特定问题,如果表已经包含数据,那么例如,当查询返回主键已经在表中的行时,您可以获得唯一的索引异常。

我使用了大量数据绑定的Windows窗体代码,其中编辑控件或窗体上的网格绑定到表,然后使用Fill将更多行从数据库加载到表中。这可能会导致一些有趣的事件触发序列和经验中的间歇性错误。

使用Get来检索具有新结果的新表,然后将表单重新绑定到新表可以避免这种情况。

我怀疑两者之间的性能差异很大,除非在现有行的表上使用Fill。在这种情况下,将忽略表的BeginLoadData方法,该方法通常会延迟事件触发和索引重建直到结束。


3
2017-10-14 11:43





使用Fill可以很好地调试异常,因为可以查询传递给方法的DataTable以获取更多详细信息。获取不会返回相同的情况。

提示:

  • DataTable.GetErrors()返回一个 出错的DataRow实例数组
  • DataRow.RowError包含一个 行错误的描述
  • DataRow.GetColumnsInError()返回 中的一个DataColumn实例数组 错误

4
2018-02-12 20:48





  • 当您只需要一个DataTable时获取。
  • 如果要将其他DataTable添加到单个DataSet中,请填写。

3
2017-10-05 19:51





唯一的区别是GetData为您实例化一个表,Fill将填充现有的表。

这取决于您是否需要实例化DataTable。我经常在填充已经实例化的DataSet的某个表成员时使用Fill。


1
2017-10-05 18:53