转自: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的使用注意事项相关推荐

  1. Asp.net 用DataSet对象更新数据(SqlDataAdapter) DataTable加主键

      私の青い色スペース 专注于.NET,认真把握好生命的每一秒,让每天都过的有意义..!     常用链接 我的随笔 我的评论 我参与的随笔 留言簿(1) 给我留言 查看公开留言 查看私人留言 我参与 ...

  2. C++ OP相关注意事项

    C++ OP相关注意事项 Paddle中Op的构建逻辑 1.Paddle中Op的构建逻辑 Paddle中所有的Op都继承自OperatorBase,且所有的Op都是无状态的,每个Op包含的成员变量只有 ...

  3. Hashing散列注意事项

    Hashing散列注意事项 Numba支持内置功能hash(),只需__hash__()在提供的参数上调用成员函数即可 .这使得添加对新类型的哈希支持变得微不足道,这是因为扩展APIoverload_ ...

  4. android 读取asset下的文件注意事项

    注意事项:file:后面是三个斜杠,后面是android_asset,在后面就是html的名字.

  5. Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)

    Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项 参考:https://blog.csdn.net/weixin_40475396/article/detail ...

  6. 【整理】NSTimer使用及注意事项

    一.NSTimer的创建 // 创建一个定时器,但是么有添加到运行循环,我们需要在创建定时器后手动的调用 NSRunLoop 对象的 addTimer:forMode: 方法. + (NSTimer ...

  7. WIN7源码安装Apache和PHP注意事项

    安装注意事项. 你注意下下载PHP,Apache的网站,上面有提示要安装Visual C++库的. Apache2.4.4需要VC10库支持,Microsoft Visual C++ 2010 SP1 ...

  8. sqlconnection,sqlcommand,SqlDataAdapter ,ExecuteNonQuery,ExecuteScalar

    sqlconnection:表示 SQL Server 数据库的一个打开的连接.SqlConnection 对象表示与 SQL Server 数据源的一个唯一的会话. 在客户端/服务器数据库系统中,它 ...

  9. html语言书写注意事项,CSS命名规范参考及书写注意事项

    CSS书写顺序 *{ /*显示属性*/ display position float clear cursor - /*盒模型*/ margin padding width height /*排版*/ ...

最新文章

  1. 物联网在智慧林业中的应用
  2. c语言autoi函数如何使用,C++的auto声明、memset函数
  3. Zookeeper集群安装(开启kerberos)
  4. 《Java 解惑》笔记(一)
  5. CentOS_mini下安装docker 之 安装docker CE
  6. 在无锡调试的工作,到了泰安出错了
  7. java opencv3轮廓_如何在OpenCV中获得单独的轮廓(并填充它们)?
  8. 密码技术学习(8.1)-数字证书简介
  9. 一款开源计算机代数系统(CAS)Maxima
  10. 【支付】银行卡支付的行为主体介绍
  11. 第4章-一阶多智体系统一致性 -> 连续时间系统一致性
  12. 公司各岗位职责及权力
  13. Amazon SPAPI PII权限申请问题汇总
  14. 数据结构——一元n次多项式加法
  15. 实力悍将联想Z5s发布1398元起售,2019超旗舰Z5 Pro GT 855版惊世降临
  16. 两晋南北朝·高洋(下)
  17. win7计算机管理对话框功能,win7如何打开运行对话框_win7电脑系统运行窗口怎么打开...
  18. ant design vue table 高度自适应_Vue组件库大评测 Element, iView, HeyUI, Ant Design Vue
  19. flash粒子文字特效
  20. iOS实现简书的登录验证方式(极验验证)

热门文章

  1. Linux 文件查找命令
  2. Servlet、Tomcat、 SpringMVC 之间的关系
  3. C语言再学习 -- printf、scanf占位符
  4. JS:javaweb——a标签实现跳转并打开新窗口
  5. 关于《Java编程思想》的简单纠正
  6. go int 转切片_DW-Go语言编程-Task06-数组、切片
  7. 【学习笔记】分布式Tensorflow
  8. Android Broadcast Security
  9. php将pdf文件存入数据库,关于tcpdf:在我的php数据库中制作pdf文件
  10. python画完图 程序暂停运行_[Python实战]你也能写的计时器程序