1、当SqlDataReader没有关闭之前,数据库连接会一直保持open状态,所以在使用SqlDataReader时,使用完毕应该马上调用SqlDataReader.Close()关闭它。

2、一个连接只能被一个SqlDataReader使用,这也是为什么要尽早关闭SqlDataReader的原因。

3、使用完SqlDataReader后,你可以在程序中显示的调用数据库连接对象的Close方法关闭连接,也可以在调用Command对象的 ExecuteReader方法时传递CommandBehavior.CloseConnection 这个枚举变量,这样在调用SqlDataReader的Close方法时会自动关闭数据库连接。

4、使用SqlDataReader时尽量使用和数据库字段类型匹配的方法来取得相应的值,比如对于整形的字段使用GetInt32,对字符类型的字段使用GetString。这样会减少因为类型不一致而额外增加的类型转换操作。

5、使用SqlDataReader获取多条记录时,如果没有访问到取出记录的末尾时想要关闭SqlDataReader,应该先调用 Command对象的Cancel方法,然后再调用SqlDataReader的Close方法。Command对象的Cancel方法使得数据库不再把 SqlDataReader中未访问的数据发送到调用端,如果不调用此方法直接关闭SqlDataReader,数据库会发送和 SqlDataReader未访问数据等长的空数据流到调用端。

6、如果想通过SqlCommand的ExecuteReader方法获取存储过程的返回值或者输出参数,必须先调用SqlDataReader的Close方法后,才能获取输出参数的值或者返回值。

7、如果使用SqlDataReader只返回一条记录,那么在调用Command的ExecuteReader方法时,指定
CommandBehavior.SingleRow
参数,这个参数的是否使用对SQL Server .NET Data Provider没有什么影响,但是当你使用OLE DB .NET Data
Provider时,指定这个参数后,DataPrivider内部将使用IRow接口,而不是使用相对来说耗费资源的IRowSet接口。

如果使用SqlDataAdapter来查询数据返回给DataSet或者DataTable时需要注意以下几点:

1、如果SqlDataAdapter的SelectCommand的连接并没有打开,使用SqlDataAdapter的Fill方法时会自动打
开数据库连接,并在方法执行完毕自动关闭连接。如果连接在使用Fill方法之前已经打开,方法执行结束后会保持连接的现有状态,不会关闭连接。

2、如果你在同一个Connection上有一系列的连续操作,例如执行多个Fill操作,你应该在最开始使用Connection的Open()方法打开连接,避免使用Fill方法时执行额外的打开连接/关闭连接操作,从而提高了程序的性能。

3、在使用SqlDataAdapter中的SqlCommand对象时,你可以重复的使用同一个SqlCommand去多次执行相同类型的操作,比如说执行多次查询,但是不要使用同一个SqlCommand去执行不同类型的操作。

使用SqlDataReader和SqlDataAdapter的注意的更多相关文章

  1. SqlDataReader、SqlDataAdapter與SqlCommand的 区别

    1.SqlDataReader,在线应用,需要conn.open(),使用完之后要关闭. SqlConnection conn = new SqlConnection(connStr); //conn ...

  2. C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter应该怎么用?

    C#中ExecuteReader.ExecuteNonQuery.ExecuteScalar.SqlDataReader.SqlDataAdapter应该怎么用? (2013-10-16 13:21: ...

  3. SqlDataReader和SqlDataAdapter

    SqlDataReader 高效,功能弱,只读访问SqlDataAdapter 强大,要求资源也大一点 SqlDataReader 只能在保持跟数据库连接的状态下才可以读取... SqlDataAda ...

  4. C#中ExecuteReader、ExecuteNonQuery、ExecuteScalar、SqlDataReader、SqlDataAdapter的区别

    ExecuteNonQuery()执行命令对象的SQL语句,返回一个int 类型的变量,返回数据库操作之后影响的行数.适合用来验证对数据库进行增删改的情况. 2.ExecuteScalar()也可以执 ...

  5. 关于SqlDataReader使用的一点疑惑

    C#中的SqlDataReader类(System.Data.SqlClient)是用来在保持打开数据库连接的状态下取数据用的 用法如下图: “保持与数据库的连接”这个特性也是SqlDataReade ...

  6. 如何从SqlDataReader中获取DataRow

    1.前言使用SqlDataReader较之SqlDataAdapter速度上快,因为读取记录是一行一行的来,但是往往也感觉那么蹩脚.例如经常用到的如何从SqlDataReader中获取DataRow呢 ...

  7. 黑马程序员_ADO.Net(ExecuteReader,Sql注入与参数添加,DataSet,总结DataSet与SqlDataReader )

    转自https://blog.csdn.net/u010796875/article/details/17386131 一.执行有多行结果集的用ExecuteReader SqlDateReader  ...

  8. 如何取消 SqlDataAdapter.Fill() 的执行(转载)

    问 Scenario: We have a DataGridView which is attached to DataAdapter (datatable), we load the data in ...

  9. CYQ.Data V5 从入门到放弃ORM系列:框架的优势

    前言: 框架开源后,学习使用的人越来越多了,所以我也更加积极的用代码回应了. 在框架完成了:数据库读写分离功能 和 分布式缓存功能 后: 经过三天三夜的不眠不休,终于完成框架第三个重量级的功能:自动化 ...

随机推荐

  1. 【只需3步】Linux php的安装与配置[源码安装]

    作者小波/QQ463431476欢迎转载! Linux:redhat 6/centos 6 继续上一篇笔记Apache的配置http://www.cnblogs.com/xiaobo-Linux/p/ ...

  2. 关于selenium RC的脚本开发

    第一.需要录制脚本,找个我也不说了.就是在firefox下下载一个selenium-IDE并且安装. 第二.在工具里找到selenium-IDE点击运行. 第三.默认是红色按钮点击状态的,接下来随便你 ...

  3. mininet中iperf sever自动退出

    使用iperf 在mininet进行吞吐量测试是常用的方法,之前结束iperf server的方法是运行os.system('pkill iperf')命令. 但是这种方式iperf server有可 ...

  4. 使用Proj库进行大地坐标转空间坐标、投影坐标的一个示例

    最近研究了proj库的使用,自己写了一个小demo,仅供参考. void demoPROJ() { const char* wgs84 = "+proj=tmerc +ellps=WGS84 ...

  5. [LeetCode] Design Phone Directory 设计电话目录

    Design a Phone Directory which supports the following operations: get: Provide a number which is not ...

  6. [LeetCode] Median of Two Sorted Arrays 两个有序数组的中位数

    There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two ...

  7. JavaScript-简单的贪吃蛇小游戏

    实现逻辑: //获取Html中的格子(行,列) //建立数组存储所有格子(x,y) //建立数组用于存储蛇身(x,y) //生成随机坐标(x,y)的函数 //随机创建蛇身并存储到蛇身数组 //创建食物 ...

  8. ios app 企业帐号发布,在浏览器中直接点击链接下载安装

    软件环境:Xcode 6.4 参考链接: 1.http://zxs19861202.iteye.com/blog/1997722 2.http://www.cnblogs.com/abl1992/p/ ...

  9. 八月22日,django知识点总结:

    八月22日,知识点总结: python manage.py makemigrations python manage.py migrate unique=true是指这个字段的值在这张表里不能重复,所 ...

  10. 递推 hdu 1330

    http://www.cnblogs.com/rainydays/archive/2013/01/16/2862235.html 看样例的答案 #include<stdio.h> #inc ...