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

但是,Web上的许多示例都使用DataSet代替并通过collections方法访问表。

使用DataSet或DataTables作为SQL结果的存储方法是否有任何优势,性能明智或其他方面?

===============>>#1 票数:87 已采纳

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

在性能方面,您更有可能从未经优化的查询中获得效率低于.NET构造的“错误”选择。 至少,那是我的经历。

===============>>#2 票数:21

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

如果您只返回单个结果集,我会认为DataTable会更加优化。 我认为必须有一些开销(授予小)来提供DataSet所做的功能并跟踪多个DataTable。

===============>>#3 票数:6

在1.x中曾经有过DataTables无法做到的事情(不记得究竟是什么)。 所有这些都在2.x中发生了变化。 我猜这就是为什么很多例子仍然使用DataSet。 DataTables应该更快,因为它们更轻量级。 如果您只提取一个结果集,那么它是两者之间的最佳选择。

===============>>#4 票数:6

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

===============>>#5 票数:3

填充DataTable时可以使用一些优化,例如调用BeginLoadData(),插入数据,然后调用EndLoadData()。 这会关闭DataTable中的一些内部行为,例如索引维护等。有关更多详细信息,请参阅此文章

===============>>#6 票数:0

当你只处理一个表时,我发现最大的实际区别是DataSet有一个“HasChanges”方法,但DataTable没有。 两者都有一个“GetChanges”,所以你可以使用它并测试null。

===============>>#7 票数:0

DataTable对象将表格数据表示为行,列和约束的内存中表格缓存。 DataSet由DataTable对象的集合组成,您可以使用DataRelation对象将它们相互关联。

  ask by GateKiller translate from so

未解决问题?本站智能推荐: