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。

时间: 2024-08-05 08:36:18

SqlDataReader和SqlDataAdapter的区别的相关文章

C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter的区别

ExecuteNonQuery()执行命令对象的SQL语句,返回一个int 类型的变量,返回数据库操作之后影响的行数.适合用来验证对数据库进行增删改的情况. 2.ExecuteScalar()也可以执行sql语句.如果SQL语句是Select查询,则仅仅返回查询结果集中第一行第一列,而忽略其他行和列.如果SQL语句不是Select查询,则这个返回结果没任何作用.(建议查询数据库时使用) 由于不知道sql语句到底是什么样的结构(有可能是int,有可能是Char等其它,)所以ExecuteScala

SqlDataReader 和SqlDataAdapter 区别

SqlDataReader和SqlDataAdapter 区别一,SqlDataReader //基于连接,只读访问 适合数据量较小.      SqlDataAdapter //基于非连接,适于数据量较大时,可以另行修改,最后再把修改结果返回给数据库.要求资源也大一点二,SqlDataAdapter 读取数据后将数据集放入DataSet ,DataSet 的数据存在本地客服机内存.三,SqlDataReader返回的是一个数据读写器,只能一条条的读,操作起来不灵活,一般在只读的时候才用到.  

SqlDataReader、SqlDataAdapter與SqlCommand的 区别

1.SqlDataReader,在线应用,需要conn.open(),使用完之后要关闭. SqlConnection conn = new SqlConnection(connStr); //conn.Open();SqlCommand cmd = new SqlCommand("select top 10 * from tuser", conn);SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnect

C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter应该怎么用?

对于C#初学者来说,我们通常遇到ExecuteReader.ExecuteNonQuery.ExecuteScalar.SqlDataReader.SqlDataAdapter这些对象或者方法的时候就开始犯晕,不知道哪个对象适合用增删改,哪个对象适合查询的时候用,本人通过 网上搜索和个人的一些理解,整理了一下,有错误的地方希望大家能给出指正. 一.//数据库连接字符串    private readonly static string connectionString =      Config

SqlDataReader和SqlDataAdapter

SqlDataReader 高效,功能弱,只读访问SqlDataAdapter 强大,要求资源也大一点 SqlDataReader 只能在保持跟数据库连接的状态下才可以读取... SqlDataAdapter 大多情况下是一次性读取一个表,然后填充到DataSet中,然后就可以断开跟数据库的连接了. 两者区别主要是   在线 和 离线 的区别..... 一:SqlDataReader rd;rd=cmd.ExecuteReader(); 比较高效,如果只是显示数据,当然要用这个 二:SqlDat

使用SqlDataReader和SqlDataAdapter的注意

1.当SqlDataReader没有关闭之前,数据库连接会一直保持open状态,所以在使用SqlDataReader时,使用完毕应该马上调用SqlDataReader.Close()关闭它. 2.一个连接只能被一个SqlDataReader使用,这也是为什么要尽早关闭SqlDataReader的原因. 3.使用完SqlDataReader后,你可以在程序中显示的调用数据库连接对象的Close方法关闭连接,也可以在调用Command对象的 ExecuteReader方法时传递CommandBeha

关于增删改查的几个对象及方法

近日和小伙伴们在进行机房合作,我负责的是D层.在重新写sqlhelper时,发现查询操作用到的是SqlDataAdapter对象,我记得还有个SqlDataReader对象也是执行对数据库的查询操作.还有增删改方法除了ExecuteNonQuery()还有没有其他方法,返回值integer和boolean有什么不同.个人重构时没好好研究,现在好好总结一下,欢迎各位斧正. 一.增删改的方法 我们在对数据库进行增删改操作时一般使用sqlcommand命令对象,这个对象的方法有三个.非别是Execut

C# sqlhelper 自练习

以下代码是参考几个不同人的写法总结写成的,肯定还有很大的优化空间,暂存该版本:有建议的欢迎提出: using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace

关于SqlDataReader使用的一点疑惑

C#中的SqlDataReader类(System.Data.SqlClient)是用来在保持打开数据库连接的状态下取数据用的 用法如下图: "保持与数据库的连接"这个特性也是SqlDataReader与SqlDataAdapter的最大区别, 思考: 既然SqlDataReader在读取数据的时候是保持对数据库的连接, 那么,如果在ExecuteReader():方法执行之后,在reader.Read()进行逐行取值的过程中, 我们改变数据库某一行的值,那么此时这个reader走到这