黑马程序员技术交流社区
标题:
Sql问题
[打印本页]
作者:
naruto2205
时间:
2013-12-15 11:48
标题:
Sql问题
本帖最后由 naruto2205 于 2013-12-15 21:19 编辑
在数据库的读取中SqlConnection、SqlCommand、SqlDataReader与SqlDataAdapter、DataSet、DataTable在使用中的区别,为什么很多书中都是介绍的后边的组合,而视频中主要讲的是前边的组合
作者:
丑男先生。
时间:
2013-12-15 12:38
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吧。毕竟绑定太节约时间了
如果就想显示个数据而已...拖吧...反正你就是想给隔壁办公室显示个报表。干嘛想那么多。
希望这种风格你能喜欢,哈哈,有问题多交流啊
作者:
y494890511
时间:
2013-12-15 12:44
1. SqlDataReader查询结果放到数据库中,没有放在客户端,初始指针指向第一条数据之前,每调用一次reader指针下一一条,只要没有移到最后一条之后,就返回true.
2. reader的GetString, GetInt32等方法只接受整数参数,也就是序号,用GetOrdinal方法根据列名动态得到序号.
3. 序号:指查询sql语句查询的字段的序号从0开始
4. DataSet是离线查询,查询结果存放在客户端,不论连接断开否,都不影响数据查询,适合小数据量,降低了对数据库服务器的压力,编程也简单.
6. SqlDataReader和DataSet的区别优缺点.
SqlDataReader是连接查询,适合大数据量的存储在数据库服务器上
Dataset是离线的查询,适合小数据量的,存储在客户端.
SqlDatareader的优点:无论查询结果有多少条,对程序占用的内存几乎没有影响,适合大数据量.
DataSet的优点:查询结果存储在客户端,断开连接服务器都不影响数据的读取,降低数据库服务器的压力.
作者:
鸡蛋壳
时间:
2013-12-15 17:55
SqlConnection:程序和数据库链接起来
sqlcommand:执行数据库的sql语句
SqlDataReader:走完上面后你就的到了查询出来的信息,这个是读每一行的信息
SqlDataAdapter:DataAdapter对象在DataSet与数据之间起桥梁作用
DataSet:把数据库读取到的信息存在缓冲中
DataTable:把数据库读取到的整个表存在内存中,这个对很大的数据有影响
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2