可数据化与数据集

目前,我使用 DataTable 从数据库中获取结果,我可以在代码中使用它。

然而,网络上的许多示例显示使用 DataSet 代替,并通过 Collection 方法访问表。

使用数据集或数据表作为 SQL 结果的存储方法有什么优点吗?

127924 次浏览

在1.x 中,曾经有一些事情是 DataTable 做不到的,而 DataSet 可以(不记得具体是什么)。所有这些都在2.x 中改变了。我猜这就是为什么许多示例仍然使用 DataSet 的原因。DataTable 应该更快,因为它们更轻量级。如果您只提取一个结果集,那么在这两者之间做出最佳选择。

这真的取决于你带回来的数据类型。由于 DataSet (实际上)只是 DataTable 对象的集合,所以可以将多个不同的数据集返回到单个对象中,因此更易于管理。

在性能方面,未经优化的查询比“错误”选择。NET 架构。至少,这是我的经验之谈。

DataSet 的一个特性是,如果可以在存储过程中调用多个 select 语句,则 DataSet 将为每个语句提供一个 DataTable。

在填充 DataTable 时可以使用一些优化,例如调用 BeginLoadData ()、插入数据,然后调用 EndLoadData ()。这将关闭 DataTable 中的一些内部行为,如索引维护等。详情请参阅 这篇文章

一个主要区别是 DataSet 可以容纳多个表,并且可以定义这些表之间的关系。

如果您只返回一个结果集,那么我认为 DataTable 会更加优化。我认为提供 DataSet 所提供的功能并跟踪多个 DataTable 必须有一定的开销(虽然开销很小)。

当您只处理单个表时,我发现最大的实际差异是 DataSet 有一个“ HasChanges”方法,而 DataTable 没有。但是,两者都有一个“ GetChanges”,因此您可以使用它并测试 null。

DataTable 对象将表格数据表示为行、列和约束的内存、表格缓存。 DataSet 由一组 DataTable 对象组成,您可以将这些对象与 DataRelations 对象彼此关联。