原文传送门

如果使用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 Data Provider没有什么影响,但是当你使用OLE DB .NET Data Provider时,指定这个参数后,DataPrivider内部将使用IRow接口,而不是使用相对来说耗费资源的IRowSet接口。

最新文章

  1. C# 闭包问题-你被”坑“过吗?
  2. 九度OJ 1531 货币面值(网易游戏2013年校园招聘笔试题) -- 动态规划
  3. c#实现几种排序方法
  4. java学习多线程之生产者消费者
  5. 企业OA面临的问题,以及解决问题的推荐
  6. c#中的数据类型简介(数组)
  7. js 完成单继承
  8. Nginx搭建反向代理服务器过程详解(转)
  9. C# 常用接口学习 ICollection<T>
  10. codeforces 286E Ladies' Shop
  11. python新手---学习第一天
  12. 解决WIN7启动DHCP服务报1075错误办法
  13. python中split()和split(' ')的区别
  14. Linux /var/log下的各种日志文件详解
  15. DataGrid列中加入CheckBox 全选 点击Header全选 和 只操作选中部分 功能的实现
  16. bzoj 3143 随机游走
  17. Oracle的decode、sign、trunc函数
  18. ios 拉伸图片和计算文字的大小
  19. Luogu 2279 [HNOI2003]消防局的设立 - 贪心
  20. spring cloud 学习(3) - feign入门

热门文章

  1. Java初始阶段
  2. 仿JQ插件
  3. javascirpt怎样模仿块级作用域(js高程笔记)
  4. 序列化悍将Protobuf-Net
  5. POJ1320 Street Numbers【佩尔方程】
  6. 寻找单向链表的倒数第k个节点
  7. jQuery EasyUI API - Base - Draggable [原创汉化官方API]
  8. 求最短路径算法之SPAF算法。
  9. jQuery无限级联下拉框插件
  10. highchart几个图表马金摘要