SqlDataReader和SqlDataAdapter

来源:互联网 发布:java主要用来做什么 编辑:程序博客网 时间:2024/05/17 02:41

SqlDataReader 高效,功能弱,只读访问
SqlDataAdapter 强大,要求资源也大一点

SqlDataReader 只能在保持跟数据库连接的状态下才可以读取。。。

SqlDataAdapter 大多情况下是一次性读取一个表,然后填充到DataSet中,然后就可以断开跟数据库的连接了。

两者区别主要是   在线 和 离线 的区别。。。。。


举个简单的例子,使用SqlDataReaderSqlDataAdapter 时,需要往数据库里插跟管子,然后跟数据库打交道。

不同得是,

SqlDataReader,当管子拔下来时,这是就报错了,它和数据库时随时呼应得关系,一直练习着。

SqlDataAdapter ,当管子拔下来时,仍然可以正常工作,因为刚开始,管子插上后,SqlDataAdapter 从数据库里把东西取出来了(数据库里东西不清空),放在另一个容器里(DataSet),它然后可以进行数据得变更操作,然后通过DataSet再放回数据库。

(插上管子=在线,拔下管子=离线)

相比较下,如果使用多个SqlDataReader,就需要插多个管子,而且着管子不能拔掉,如果插的管子多了。。,想象下,你身上插了好多把刀子。。。太可怕了,

虽然SqlDataAdapter 插过管子,可以拔下来,但是数据量大时,从数据库取出来得东西多,放在DataSet中,如果这些数据都能够用得到还讲的过去,如果只用一部分,,那就造成了很大得资源浪费。

两种方式各有利弊,使用时根据实际情况来

一:
SqlDataReader rd;
rd=cmd.ExecuteReader();

比较高效,如果只是显示数据,当然要用这个

二:
SqlDataAdapter adapter=new SqlDataAdapter(cmd);
ADO.NET里有两类,连线 离线
离线的就是DataSet等,可以把数据取出来放进去,然后断开连接,节省服务器资源
当你在本地做了更改后,再连上数据库进行更新
这种取数据和更新数据的工作就是由SqlDataAdapter做的

SqlDataReader //基于连接,只读访问 适合数据量较小
SqlDataAdapter //基于非连接,适于数据量较大时,可以另行修改,最后再把修改结果返回给数据库。要求资源也大一点


1.SqlDataReader返回的是一个数据读写器,只能一条条的读,操作起来不灵活,一般在只读的时候才用到。
2.SqlDataAdapter返回的是数据集或者表,可以对其中的数据作任意操作

 

SqlDataReader是个数据读取器,向前不可后退、每次只读取一条。速度快,现代项目里面用它用得最多。 
DataSet是个内存数据库,它与其它两个是根本不一样的。 
SqlDataAdapter是个数据适配器,工作于DataSet和数据库之间,负责将数据从数据源读出来放在DataSet中,或将DataSet中的更改更新回数据库。

所以以上可以综合成两种模式:

1是SqlDataReader一条一条读(通常这后面会跟有实体转化相关的);2是使用SqlDataAdapter和DataSet。 


部分摘自网络,还望大家共同进步。

原创粉丝点击