在处理来自数据库的数据(强类型或其他类型)时,我似乎总是使用 Get,我从来没有真正需要使用 Fill,尽管在提取和更新数据时我可以很容易地使用 Fill 而不是 get。
任何人都可以就每种方法的含义和陷阱提供指导吗?
在什么情况下最好使用其中一种?
任何性能影响?
提前感谢您的回答!我爱这个社区!
在处理来自数据库的数据(强类型或其他类型)时,我似乎总是使用 Get,我从来没有真正需要使用 Fill,尽管在提取和更新数据时我可以很容易地使用 Fill 而不是 get。
任何人都可以就每种方法的含义和陷阱提供指导吗?
在什么情况下最好使用其中一种?
任何性能影响?
提前感谢您的回答!我爱这个社区!
使用 Fill 可以很好地调试异常,因为可以查询传递给方法的 DataTable 以获取更多详细信息。Get 不会在相同的情况下返回。
尖端:
如果表已经包含数据,则 Fill 的一个特殊问题是,例如,当查询返回主键已经在表中的行时,您可能会遇到唯一索引异常。
我使用过很多数据绑定的 Windows 窗体代码,其中编辑控件或窗体上的网格绑定到表,然后使用填充将更多行从数据库加载到表中。这可能会导致一些有趣的事件触发序列和经验中的间歇性错误。
使用 Get 检索具有新结果的新表,然后将表单重新绑定到新表可以避免这种情况。
我怀疑两者之间存在很大的性能差异,除非在具有现有行的表上使用 Fill。在这种情况下,表的 BeginLoadData 方法将被忽略,这通常会延迟事件触发和索引重建直到结束。
唯一的区别是 GetData 为您实例化了一个表,Fill 将填充一个现有的表。
这取决于您是否想要或需要实例化 DataTable。在填充已实例化的 DataSet 的某个表成员时,我经常使用 Fill。