代码之家  ›  专栏  ›  技术社区  ›  Daniel

更好的是:数据集还是数据阅读器?

  •  50
  • Daniel  · 技术社区  · 17 年前

    我刚刚看到这个话题: Datatable vs Dataset 但这并没有解决我的疑问。让我解释一下,我正在连接数据库,需要在网格视图中显示结果。(我以前在使用vb6时使用过记录集,数据集和它非常相似,所以使用数据集更容易。) 然后一个人告诉我数据集不是最好的方法。

    那么,我应该“学习”数据阅读器还是继续使用数据集?DataTable? 有哪些优点/缺点?

    5 回复  |  直到 9 年前
        1
  •  71
  •   Ahmad Mageed    17 年前

    这取决于你的需要。其中一个最重要的区别是,数据阅读器将保持与数据库的开放连接,直到完成操作为止,而数据集将是内存中的对象。如果将控件绑定到DataReader,那么它仍然是打开的。此外,数据阅读器是一种只能向前读取无法操作的数据的方法。使用数据集,您可以前后移动并根据需要操作数据。

    一些附加特性:数据集可以用XML进行序列化和表示,因此,很容易传递到其他层。无法序列化DataReader。

    另一方面,如果要从数据库中读取大量的行,而要将这些行交给某个业务规则的某个流程,则DataReader可能更有意义,而不是使用所有行加载数据集,占用内存,可能会影响可伸缩性。

    下面是一个有点过时但仍然有用的链接: Contrasting the ADO.NET DataReader and DataSet .

        2
  •  192
  •   Vitalij    12 年前

    这基本上是:“哪个更好:水桶还是水龙带?”

    DataSet 这里是存储桶;它允许您携带一组断开连接的数据并使用它——但是您将承担携带存储桶的成本(因此最好保持您所能接受的大小)。

    数据阅读器就是软管:它提供单向/一次性访问数据,当数据从你身边飞过时;你不必一次携带所有可用的水,但它需要连接到水龙头/数据库。

    同样的,你可以用软管把桶装满,你也可以用软管把桶装满。 数据集 使用数据阅读器。

    我想说的是他们做不同的事情…

    我个人不使用 数据集 很多时候-但有些人喜欢他们。但是,我确实使用数据阅读器来访问blob等。

        3
  •  12
  •   Community Mohan Dere    9 年前

    进一步 Marc's 要点:您可以使用一个完全没有数据库的数据集。

    您可以从XML文件填充它,也可以只从程序填充它。用一个数据库中的行填充它,然后返回并将其写到另一个数据库中。

    数据集是关系模式的完全内存表示。无论您是否曾经将它用于实际的关系数据库,都取决于您自己。

        4
  •  4
  •   AviD    17 年前

    不同的需求,不同的解决方案。

    如您所说,数据集与VB6记录集最相似。也就是说,把你需要的数据拉下来,传递出去,做你想做的。哦,最后你做完了就把它扔掉。

    DataReader比较有限,但是当您只需要读取一次数据时,它会提供更好的性能。例如,如果您自己填充一个网格——即拉取数据,运行它,对于每一行填充网格,然后抛出数据——DataReader比DataSet好得多。另一方面,如果您有更新数据的意图,甚至不要尝试使用DataReader…

    所以,是的,学习它-但只有在适当的时候才使用它。数据集为您提供了更多的灵活性。

        5
  •  0
  •   Martin Clarke    17 年前

    要回答您的第二个问题-是的,您应该了解数据阅读器。如果有的话,那么你就知道如何使用它们了。

    我认为在这种情况下,使用数据集更好——因为您正在进行数据绑定和所有操作(我认为CPU周期与人工工作相比)。

    至于哪一个能表现得更好。这在很大程度上取决于你的情况。例如,如果您正在编辑要绑定的数据并对更改进行批处理,那么您最好使用数据集。