DataReader 提供未缓冲的数据流,该数据流使过程逻辑可以有效地按顺序处理从数据源中返回的结果。由于数据不在内存中缓存,所以在检索大量数据时,DataReader 是一种适合的选择。
当 DataReader 打开时,该 DataReader 将以独占方式使用 Connection。在原始 DataReader 关闭之前,将无法对 Connection 执行任何命令(包括创建另一个 DataReader)。
不要在类的 Finalize 方法中对 Connection、DataReader 或任何其他托管对象调用 Close 或 Dispose。在终结器中,仅释放类直接拥有的非托管资源。如果类不拥有任何非托管资源,则不要在类定义中包含 Finalize 方法。
reader对象的getName方法可以倒序读取,但是getInt,getString等获取数据的方法只能顺序读取。
可以使用 ADO.NET DataReader 从数据库中检索只读、只进的数据流。查询结果在查询执行时返回,在并存储在客户端的网络缓冲区中,直到您使用 DataReader 的 Read 方法对它们发出请求。使用 DataReader 可以提高应用程序的性能,原因是它只要数据可用就立即检索数据,并且(默认情况下)一次只在内存中存储一行,减少了系统开销。
DataAdapter 用于从数据源检索数据并填充 DataSet 中的表。DataAdapter 还可将对 DataSet 所做的更改解析回数据源。DataAdapter 使用 .NET Framework 数据提供程序的 Connection 对象连接到数据源,并使用 Command 对象从数据源检索数据以及将更改解析回数据源。
datareader相比dataset的好处是:它不会在内存中缓存数据。
dataset的好处是:它比较灵活,可以CURD(增删查改),“非流水模式”。