SqlDataAdapter的使用注意事项
转自:http://tankywang.iteye.com/blog/1195910 (向原作者致敬)
如果使用SqlDataAdapter来查询数据返回给DataSet或者DataTable时需要注意以下几点:
1、如果SqlDataAdapter的SelectCommand的连接并没有打开,使用SqlDataAdapter的Fill方法时会自动打开数据库连接,并在方法执行完毕自动关闭连接。如果连接在使用Fill方法之前已经打开,方法执行结束后会保持连接的现有状态,不会关闭连接。
2、如果你在同一个Connection上有一系列的连续操作,例如执行多个Fill操作,你应该在最开始使用Connection的Open()方法打开连接,避免使用Fill方法时执行额外的打开连接/关闭连接操作,从而提高了程序的性能。
3、在使用SqlDataAdapter中的SqlCommand对象时,你可以重复的使用同一个SqlCommand去多次执行相同类型的操作,比如说执行多次查询,但是不要使用同一个SqlCommand去执行不同类型的操作。
4、当SqlDataReader没有关闭之前,数据库连接会一直保持open状态,所以在使用SqlDataReader时,使用完毕应该马上调用SqlDataReader.Close()关闭它。
5、一个连接只能被一个SqlDataReader使用,这也是为什么要尽早关闭SqlDataReader的原因。
6、使用完SqlDataReader后,你可以在程序中显示的调用数据库连接对象的Close方法关闭连接,也可以在调用Command对象的 ExecuteReader方法时传递CommandBehavior.CloseConnection这个枚举变量,这样在调用SqlDataReader的Close方法时会自动关闭数据库连接。
7、使用SqlDataReader时尽量使用和数据库字段类型匹配的方法来取得相应的值,比如对于整形的字段使用GetInt32,对字符类型的字段使用GetString。这样会减少因为类型不一致而额外增加的类型转换操作。
8、使用SqlDataReader获取多条记录时,如果没有访问到取出记录的末尾时想要关闭SqlDataReader,应该先调用Command对象的 Cancel方法,然后再调用SqlDataReader的Close方法。Command对象的Cancel方法使得数据库不再把 SqlDataReader中未访问的数据发送到调用端,如果不调用此方法直接关闭SqlDataReader,数据库会发送和 SqlDataReader未访问数据等长的空数据流到调用端。
9、如果想通过SqlCommand的ExecuteReader方法获取存储过程的返回值或者输出参数,必须先调用SqlDataReader的Close方法后,才能获取输出参数的值或者返回值。
10、如果使用SqlDataReader只返回一条记录,那么在调用Command的ExecuteReader方法时,指定CommandBehavior.SingleRow参数,这个参数的是否使用对SQL Server .NET DataProvider没有什么影响,但是当你使用OLE DB .NET Data Provider时,指定这个参数后,DataPrivider内部将使用IRow接口,而不是使用相对来说耗费资源的IRowSet接口。
转载于:https://www.cnblogs.com/java20130722/p/3207068.html
SqlDataAdapter的使用注意事项相关推荐
- Asp.net 用DataSet对象更新数据(SqlDataAdapter) DataTable加主键
私の青い色スペース 专注于.NET,认真把握好生命的每一秒,让每天都过的有意义..! 常用链接 我的随笔 我的评论 我参与的随笔 留言簿(1) 给我留言 查看公开留言 查看私人留言 我参与 ...
- C++ OP相关注意事项
C++ OP相关注意事项 Paddle中Op的构建逻辑 1.Paddle中Op的构建逻辑 Paddle中所有的Op都继承自OperatorBase,且所有的Op都是无状态的,每个Op包含的成员变量只有 ...
- Hashing散列注意事项
Hashing散列注意事项 Numba支持内置功能hash(),只需__hash__()在提供的参数上调用成员函数即可 .这使得添加对新类型的哈希支持变得微不足道,这是因为扩展APIoverload_ ...
- android 读取asset下的文件注意事项
注意事项:file:后面是三个斜杠,后面是android_asset,在后面就是html的名字.
- Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)
Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项 参考:https://blog.csdn.net/weixin_40475396/article/detail ...
- 【整理】NSTimer使用及注意事项
一.NSTimer的创建 // 创建一个定时器,但是么有添加到运行循环,我们需要在创建定时器后手动的调用 NSRunLoop 对象的 addTimer:forMode: 方法. + (NSTimer ...
- WIN7源码安装Apache和PHP注意事项
安装注意事项. 你注意下下载PHP,Apache的网站,上面有提示要安装Visual C++库的. Apache2.4.4需要VC10库支持,Microsoft Visual C++ 2010 SP1 ...
- sqlconnection,sqlcommand,SqlDataAdapter ,ExecuteNonQuery,ExecuteScalar
sqlconnection:表示 SQL Server 数据库的一个打开的连接.SqlConnection 对象表示与 SQL Server 数据源的一个唯一的会话. 在客户端/服务器数据库系统中,它 ...
- html语言书写注意事项,CSS命名规范参考及书写注意事项
CSS书写顺序 *{ /*显示属性*/ display position float clear cursor - /*盒模型*/ margin padding width height /*排版*/ ...
最新文章
- 物联网在智慧林业中的应用
- c语言autoi函数如何使用,C++的auto声明、memset函数
- Zookeeper集群安装(开启kerberos)
- 《Java 解惑》笔记(一)
- CentOS_mini下安装docker 之 安装docker CE
- 在无锡调试的工作,到了泰安出错了
- java opencv3轮廓_如何在OpenCV中获得单独的轮廓(并填充它们)?
- 密码技术学习(8.1)-数字证书简介
- 一款开源计算机代数系统(CAS)Maxima
- 【支付】银行卡支付的行为主体介绍
- 第4章-一阶多智体系统一致性 -> 连续时间系统一致性
- 公司各岗位职责及权力
- Amazon SPAPI PII权限申请问题汇总
- 数据结构——一元n次多项式加法
- 实力悍将联想Z5s发布1398元起售,2019超旗舰Z5 Pro GT 855版惊世降临
- 两晋南北朝·高洋(下)
- win7计算机管理对话框功能,win7如何打开运行对话框_win7电脑系统运行窗口怎么打开...
- ant design vue table 高度自适应_Vue组件库大评测 Element, iView, HeyUI, Ant Design Vue
- flash粒子文字特效
- iOS实现简书的登录验证方式(极验验证)
热门文章
- Linux 文件查找命令
- Servlet、Tomcat、 SpringMVC 之间的关系
- C语言再学习 -- printf、scanf占位符
- JS:javaweb——a标签实现跳转并打开新窗口
- 关于《Java编程思想》的简单纠正
- go int 转切片_DW-Go语言编程-Task06-数组、切片
- 【学习笔记】分布式Tensorflow
- Android Broadcast Security
- php将pdf文件存入数据库,关于tcpdf:在我的php数据库中制作pdf文件
- python画完图 程序暂停运行_[Python实战]你也能写的计时器程序