zoukankan      html  css  js  c++  java
  • SqlDataReader和SqlDataAdapter的区别

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

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

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

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

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

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

    二:
    SqlDataAdapter adapter=new SqlDataAdapter(cmd);
    ADO.Net里有两类,连线 离线
    离线的就是DataSet等,可以把数据取出来放进去,然后断开连接,节省服务器资源
    当你在本地做了更改后,再连上数据库进行更新
    这种取数据和更新数据的工作就是由SqlDataAdapter做的,他是“延长的电线”--这个比喻好像出自《ado.net技术内幕》

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

    SqlDataReader像一个链表一样,只能往一个方向读数据
    SqlDataAdapter的功能就像他们说得非常强大了

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

    datareader是将数据库查询到的记录逐条返回给.net程序,每返回一条,.net程序处理一条,直至返回完毕,在未返回完毕前,是一直占用数据库连接的,所以它是面向连接的技术。 

    SqlDataAdapter是将数据库返回的查询一次性装入内存,然后供.net程序调用,并且会立即释放数据库连接。所以它是面向非连接的。

    快,当然是datareader,但是当你的连接池紧张时,就要用“空间换时间”了,即SqlDataAdapter
    一般并发100以上,而且是需要“高速度服务”的情况用DR。

  • 相关阅读:
    gulp + es6 + babel+ angular 搭建环境并实现简单的路由
    【SAS BASE】FORMAT Statement及PROC FORMAT
    【SAS BASE】PROC PRINT
    【SAS BASE】PROC SORT
    【SAS BASE】ARRAY语句及多变量简写
    【SAS BASE】SAS函数
    【SAS BASE】PROC CONTENTS与LABEL
    【SAS BASE】SAS格式、缺失值表示、命名规则及路径
    【SAS BASE】IMPORT过程(适用于CSV文件及其他分隔符文件)
    【SAS BASE】通过DATA步导入数据注意事项(适用于text、ASCII、sequential、flat文件)
  • 原文地址:https://www.cnblogs.com/eaysun/p/4138039.html
Copyright © 2011-2022 走看看