使用Class从数据库中获取一行最适合使用的数据时:
感谢你的时间,Nathan
答案 0 :(得分:3)
DataReader始终是您的最佳选择 - 前提是它与您的使用兼容。 DataReader非常快速,高效且轻量级 - 但它们要求您在其生命周期中维护活动/开放数据库连接,这意味着它们无法跨AppDomain(或跨Web服务等)进行编组。
DataSet实际上是由DataReaders填充的 - 它们是急切加载的(所有数据都是在访问任何数据之前填充的),因此性能较差,但它们具有可序列化的附加好处(它们基本上只是一个DTO)这意味着它们很容易通过AppDomains或Web服务进行传输。
差异有时归结为“DataReader是ADO.NET ONLINE的理想选择(暗示保持数据库连接打开是好的),而DataSet是ADO.NET OFFLINE的理想选择(消费者无法连接)直接到数据库)。
答案 1 :(得分:0)
DataAdapter(填充DataSet)使用DataReader来执行此操作。
因此,DataReader总是比DataAdapter更轻量级,更易于使用。 DataSets和DataTables在内存使用方面总是有巨大的开销。如果要获取单行,则没有区别,但对于更大的结果集会产生巨大的差异。
如果要获取固定数量的项目,则在MS SQL Server中,存储过程(或参数化命令)中的输出变量通常表现最佳。
答案 2 :(得分:0)
如果使用阅读器,则必须与数据库建立打开连接,通常使用DataReader获取组合或数据网格,但如果要将数据存储在内存中并关闭数据库连接,则必须使用数据表
注意:请原谅我的英语水平
答案 3 :(得分:0)
如果您只想要对数据进行只读访问,那么请使用原始DataReader;这是禁食且最轻量级的数据访问方法。
但是,如果您打算更改数据并保存回数据库,那么我建议使用DataAdapter和DataSet(甚至是类型化的DataSet),因为DataSet类负责跟踪对数据的更改,添加和删除。设置使得保存更容易。此外,如果数据集中有多个表,则可以在数据集中对它们之间的引用约束进行建模。