版权声明:本文为博主原创文章,未经博主同意不得转载。

https://blog.csdn.net/u010512579/article/details/24011761

在封装通用 SQLSERVER 数据可訪问方法时,假设返回值类型为 SqlDataReader ,那么在创建连接字符串的时候。我们不能写成例如以下

public static  SqlDataReader ExecuteReader(string strSQL)

{

using (SqlConnection connection = new SqlConnection(connectionString))

{

using (SqlCommand cmd = new SqlCommand(strSQL, connection))

{

try

{

connection.Open();

SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

return myReader;

}

catch (System.Data.SqlClient.SqlException ex)

{

throw new Exception(ex.Message);

}

}

}

}

你在使用using创建的时候,在SqlDataReader 赋值后return时,SqlConnection 就会被释放资源,连接就会被关闭。而我们传递过去的SqlDataReader 是引用类型,接收传递过去的SqlDataReader 的地方调用的时候,就会提示连接已经被关闭。无法调用,由于  using (SqlConnection connection = new SqlConnection(connectionString))在方法结束时,就把资源释放了,并关闭了连接。为了正常接收传递过去的SqlDataReader 。在创建连接的时候不能用using,正确的写法例如以下

public static  SqlDataReader ExecuteReader(string strSQL)

{

SqlConnection connection = new SqlConnection(connectionString);

using (SqlCommand cmd = new SqlCommand(strSQL, connection))

{

try

{

connection.Open();

SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

return myReader;

}

catch (System.Data.SqlClient.SqlException ex)

{

throw new Exception(ex.Message);

}

}

}

转载于:https://www.cnblogs.com/xfgnongmin/p/10642901.html

c#数据库訪问返回值类型为SqlDataReader时使用using时注意的问题相关推荐

  1. (转)C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

    原文链接:https://www.cnblogs.com/landeanfen/p/5501487.html 阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T ...

  2. JDBC连接mysql、创建表、操作数据、PreparedStatement防注入、sql语句返回值类型知识汇总

    JDBC连接过程: import java.sql.*;/*** Description:* Created by CWG on 2020/10/29 21:05*/ public class Con ...

  3. MyBatis查询结果resultType返回值类型详细介绍

    一.返回一般数据类型 比如要根据 id 属性获得数据库中的某个字段值. mapper 接口: // 根据 id 获得数据库中的 username 字段的值String getEmpNameById(I ...

  4. 机房重构 之 抽象工厂+反射+配置文件 实现数据库訪问

    重构机房已经開始三个多星期了,从刚開始的一头雾水,到如今的柳暗花明,由開始的无从下手,到如今感觉犹 如脱胎换骨了般.和两个星期前相比.如今明朗了多了,心情也好了不少. 先给大家看一下这次重构的总体架构 ...

  5. MyBatis中resultType返回值类型介绍

    一.返回一般数据类型 比如要根据 id 属性获得数据库中的某个字段值. mapper 接口: // 根据 id 获得数据库中的 username 字段的值 String getEmpNameById( ...

  6. Jav详细介绍的Mapper对应的Mybatis xml查询结果resultType返回值类型

    一.返回一般数据类型 此实列总代用的是string类型 列:比如我们要根据 id 属性获得数据库中的某个字段值. mapper 接口: // 根据 id 获得数据库中的 username 字段的值   ...

  7. python参数类型限定_python限定方法参数类型、返回值类型、变量类型等|python3教程|python入门|python教程...

    https://www.xin3721.com/eschool/python.html typing模块的作用 自python3.5开始,PEP484为python引入了类型注解(type hints ...

  8. java 返回值判断_在Java中判断方法重载的条件除了参数外,还可以通过返回值类型判断。_学小易找答案...

    [单选题]若int x;且有下面的程序片断,则输出结果是() . for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "** ...

  9. php mysql update 返回_php mysql_query增删改查(update delete insert)返回值类型

    insert插入返回值类型 $result=mysql_query("insert into table(id,name,age)values(1,'wxp',30)"); var ...

最新文章

  1. 联想e580没有声音_现在你可以购买通过 Linux 认证的联想 ThinkPad 和 ThinkStation
  2. QEMU支持的网络模式
  3. 2009中国海上大阅兵全视频
  4. Linux命令(15)——hostname、wc、ps、kill
  5. RabbitMQ(mall学习)
  6. python中当地时间_R 与 Python 中与时间相关内容的梳理
  7. js之base64上传图片
  8. C#中使用SqlBulk百万级数据秒级插入
  9. python numpy中对ndarry按照index(位置下标)增删改查
  10. c++学习笔记(5)
  11. 个人住房抵押贷款流程让你的贷款更轻松
  12. c# serialPort.DataReceived无法被触发接收数据
  13. cml sml区别_资本资产定价模型中cml与sml有什么区别?
  14. html插入swf自动播放,如何在HTML页面中嵌入SWF文件?
  15. 装上这几款IDEA插件,专业程度提升妥妥的
  16. 软件工程-耦合与内聚简单实例
  17. 大学里 信息领域的专业 名称解释
  18. 软件测试:sql注入·依赖基本sql语句
  19. 数据分析的日常工作——如何成为不被追着要数据的数据分析师?
  20. Java使用程序ZHConverter把工程内所有文件的简体字转换为繁体字

热门文章

  1. 这可能是我见过最详细的快速排序!
  2. xcode中用pods管理第三方库转
  3. CFile、CStdioFile、FILE和其他文件操作(转)
  4. Daily Scrum 2012/11/08
  5. Android-i9023 Root
  6. vue路由详解版一目了然
  7. Spring注解配置工作原理源码解析
  8. Laravel 中的 视图和模型
  9. 高并发架构系列:Redis为什么是单线程、及高并发快的3大原因详解
  10. 第一篇-Html标签中head标签,body标签中input系列,textarea和select标签