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

发布于 2024-07-07 20:31:28 字数 202 浏览 12 评论 0原文

在处理数据库中的数据(强类型或其他)时,我似乎总是使用 Get,并且我从未真正需要使用 Fill,尽管在提取和更新数据时我可以轻松地使用 Fill 而不是 get。

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

在什么情况下最好使用其中一种?

有任何性能影响吗?

预先感谢您的回答! 我喜欢这个社区!

I always seem to use Get when working with data (strongly typed or otherwise) from the database and I have never really needed to use Fill although I just as easily could use Fill instead of get when pulling out and updating data.

Can anyone provide guidance as to the implications and gotchas of each method?

In what situations is it preferable to use one or the other?

Any performance implications?

Thanks in advance for the answers! I love this community!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

往日情怀 2024-07-14 20:31:28

使用 Fill 对于调试异常非常有用,因为可以询问传递到该方法的 DataTable 以获取更多详细信息。 在同样的情况下 Get 不会返回。

提示:

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

Using Fill can be great for debugging exceptions because the DataTable passed into the method can be interrogated for more details. Get does not return in the same situation.

Tips:

  • DataTable.GetErrors() returns an
    array of DataRow instances that are in error
  • DataRow.RowError contains a
    description of the row error
  • DataRow.GetColumnsInError() returns
    an array of DataColumn instances in
    error
祁梦 2024-07-14 20:31:28

如果表已包含数据,Fill 的一个特殊问题是,例如,当查询返回主键已在表中的行时,您可能会遇到唯一索引异常。

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

使用 Get 检索包含新结果的新表,然后将表单重新绑定到新表可以避免此类情况。

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

A particular gotcha of Fill, if the table already contains data is that you could get unique index exceptions when, for example, the query returns a row whose primary key is already in the table.

I've worked with a lot of data-bound Windows Forms code where edit controls or a grid on the form is bound to a table and then Fill is used to load more rows from the database to the table. This can cause some interesting event firing sequences and intermittent errors from experience.

Using Get to retrieve a new table with the new results then rebinding the form to the new table can avoid situations like this.

I doubt there is much performance difference between the two unless using Fill on a table with existing rows. In this case the table's BeginLoadData method is ignored which would normally have delayed event firing and index rebuilding until the end.

╭ゆ眷念 2024-07-14 20:31:28
  • 当您只需要一个 DataTable 时获取。
  • 当您想要将其他数据表添加到单个数据集中时填写。
  • Get when you only want a single DataTable.
  • Fill when you want to add additional DataTables into a single DataSet.
雪化雨蝶 2024-07-14 20:31:28

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

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

The only difference is that GetData instantiates a table for you, Fill will fill an existing table.

It depends if you want or need to instantiate the DataTable. I often use Fill when filling a certain table member of a DataSet I already instantiated.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文