DataAdapter是DataReader封装来的,从数据量级来说,DataAdapter的过程较慢(写内存),一般用于小型数据处理,DataReader一般用于大型数据处理。
【如果有大量的数据操作,则最好自己写DbCommand,会比DataAdapter操作数据库快很多】
DataReader是一个向前的指针,本身不包含数据,调用一次Read()就向前到下一条记录,一个DataReader必须单独占用一个打开的数据库连接。所以DbConnection无法执行任何操作,除非调用DataReader的Close()方法,否则会一直处于此状态。DataReader需要与list集合配合使用
DataAdapter更像是一个桥梁,一头连接数据库,一头连接DataSet或DataTable,当把数据库中的数据填充到DataSet或DataTable中后,就可以断开与数据库的连接。不再需要访问数据库,直接从DataSet或DataTable中获取数据。也可以使用DataView对DataSet中的数据进行筛选和排序
两者如何选择,当设计应用程序时,应该考虑应用程序所需功能的等级,以确定是使用DataSet还是DataAdapter;要通过应用程序执行以下操作,就要应用DataSet:
在多个离散表之间进行导航
操作来自多个数据源的数据
与DataAdapter不同的是,DataSet能传递数据给远程客户端
重用同样的记录集合,以便通过缓存获得性能改善
每条记录都需要执行大量处理。对使用DataAdapter返回的每一行都进行大量的拓展处理会延长服务于DataAdapter的连接的必要时间,这影响了性能
使用XML操作对数据进行操作
并行开发时,最好使用DataReader封装;
C/S架构,可以适当使用DataAdapter,DataSet占用的是客户机的内存;B/S架构中尽量少使用DataAdapter,因为DataSet占用服务器内存。