A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© naruto2205 中级黑马   /  2013-12-15 11:48  /  1046 人查看  /  6 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 naruto2205 于 2013-12-15 21:19 编辑

在数据库的读取中SqlConnection、SqlCommand、SqlDataReader与SqlDataAdapter、DataSet、DataTable在使用中的区别,为什么很多书中都是介绍的后边的组合,而视频中主要讲的是前边的组合

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

6 个回复

倒序浏览
1 上帝说,要连接数据库,于是就有了sqlconnection (数据库连接,配置连接字符串等,用户名密码之类)

2 上帝说,要执行sql语句。于是就有了sqlcommand, 直接翻译成sql命令。每个sqlcommand都有commandtext跟parameters 文本跟参数。填写好这个命令,然后execute去执行。当然,要确保连接是open的才能执行。没连接啥都干不了。

3 上帝认为要有办法读取返回结果,于是便有了datareader.可以一条一条的读取(read)直到最后一条。

4 上帝认为,把执行的结果找个地方存起来是好的。于是就有了dataset。这个东西很完美,基本上能存各种数据跟关系,比datareader方便很多。里面有一个一个的dataview跟datatable.针对你的查询结果,当然,datatable又可以从datarow一个一个的循环取得

5 上帝觉得上述步骤太复杂了 -_-!
于是便有了SqlDataAdapter (翻译为SQL数据适配器,适配器模式) 它来封装简化了上述步骤。你只要new出来一个sqldataadapter,给他填上语句,直接fill到dataset就行了。 这样你什么都有了,只需要两步!

6 微软觉得,可视化的东西是上帝喜欢的(用户==上帝)
于是有了一个一个的SqlAdapter控件,DataSet控件,GridView控件....你可以直接拖到你的窗口(WinForm)或者页面(Asp.Net Web Application等)设置几个属性,绑定即可。一行代码都不用写。以至于普通网管跟文员都能成为潜在用户。(虽然这种方式被“专业程序员”所不齿)

7建议:
如果喜欢效率的,用command+datareader自己处理(要小心别弄得更差哦)
如果喜欢方便的,就大量的使用Adapter+DataSet吧。毕竟绑定太节约时间了
如果就想显示个数据而已...拖吧...反正你就是想给隔壁办公室显示个报表。干嘛想那么多。

希望这种风格你能喜欢,哈哈,有问题多交流啊

评分

参与人数 1技术分 +2 收起 理由
V_John + 2 很给力!

查看全部评分

回复 使用道具 举报 2 0
1.        SqlDataReader查询结果放到数据库中,没有放在客户端,初始指针指向第一条数据之前,每调用一次reader指针下一一条,只要没有移到最后一条之后,就返回true.
2.        reader的GetString, GetInt32等方法只接受整数参数,也就是序号,用GetOrdinal方法根据列名动态得到序号.
3.        序号:指查询sql语句查询的字段的序号从0开始
4.        DataSet是离线查询,查询结果存放在客户端,不论连接断开否,都不影响数据查询,适合小数据量,降低了对数据库服务器的压力,编程也简单.
6.        SqlDataReader和DataSet的区别优缺点.
SqlDataReader是连接查询,适合大数据量的存储在数据库服务器上
Dataset是离线的查询,适合小数据量的,存储在客户端.
SqlDatareader的优点:无论查询结果有多少条,对程序占用的内存几乎没有影响,适合大数据量.
DataSet的优点:查询结果存储在客户端,断开连接服务器都不影响数据的读取,降低数据库服务器的压力.

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
SqlConnection:程序和数据库链接起来
sqlcommand:执行数据库的sql语句
SqlDataReader:走完上面后你就的到了查询出来的信息,这个是读每一行的信息
SqlDataAdapter:DataAdapter对象在DataSet与数据之间起桥梁作用
DataSet:把数据库读取到的信息存在缓冲中
DataTable:把数据库读取到的整个表存在内存中,这个对很大的数据有影响

评分

参与人数 1技术分 +1 收起 理由
V_John + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马