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。

原文地址:https://www.cnblogs.com/eaysun/p/4138039.html