SqlDataReader和SqlDataAdapter
来源:互联网 发布:java主要用来做什么 编辑:程序博客网 时间:2024/05/17 02:41
SqlDataReader 高效,功能弱,只读访问
SqlDataAdapter 强大,要求资源也大一点
SqlDataReader 只能在保持跟数据库连接的状态下才可以读取。。。
SqlDataAdapter 大多情况下是一次性读取一个表,然后填充到DataSet中,然后就可以断开跟数据库的连接了。
两者区别主要是 在线 和 离线 的区别。。。。。
举个简单的例子,使用SqlDataReader和SqlDataAdapter 时,需要往数据库里插跟管子,然后跟数据库打交道。
不同得是,
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。
部分摘自网络,还望大家共同进步。
- SqlDataReader和SqlDataAdapter 区别
- SqlDataReader和SqlDataAdapter 区别
- SqlDataReader和SqlDataAdapter
- SqlDataAdapter和SqlDataReader
- SqlDataReader和SqlDataAdapter 区别
- SqlDataReader和SqlDataAdapter 区别
- SqlDataReader和SqlDataAdapter
- SqlDataReader和SqlDataAdapter 区别
- SqlDataReader和SqlDataAdapter
- SqlDataAdapter和SqlDataReader区别
- SqlDataReader和SqlDataAdapter
- SqlDataReader和SqlDataAdapter+DataSet 区别
- c#之SqlDataAdapter和SqlDataReader
- 使用SqlDataReader和SqlDataAdapter的注意
- sqldatareader 和 sqldataadapter 、dateset的比较
- sqldatareader 和 sqldataadapter 、dateset的比较
- SqlDataReader 和 SqlDataAdapter 、DateSet的比较
- C# SqlDataAdapter和SqlDataReader的区别
- Python基础(八)---进程间通信-Queue
- C程序内存布局学习总结
- bzoj 1027: [JSOI2007]合金(floyd最小环)
- Java线程死锁
- springmvc、jpa(hibernate)、mybatis组合框架搭建(三)——加入JPA、单元测试
- SqlDataReader和SqlDataAdapter
- C++ 判断一个数是否在int的取值范围内
- 【LeetCode】520 Detect Capital
- Java实现冒泡排序
- JSON:JS对象表示法
- html javascript原型(二)
- 排序算法之冒泡排序
- 使用HTML+CSS实现如图布局,border-width:5px,格子大小是50px*50px,hover时 边框变成红色,需要考虑语义化。
- IO流——LineNumberReader