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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264362.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BroadcastReceiver应用详解(转)

转自: http://blog.csdn.net/liuhe688/article/details/6955668 問渠那得清如許?為有源頭活水來。南宋.朱熹《觀書有感》 据说程序员是最爱学习的群体,IT男都知道,这个行业日新月异,必须不断地学习新知识,不…

深入浅出JSON

深入浅出JSON JSON定义 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于ECMA262语言规范(1999-12第三版)中JavaScript编程语言的一个子集。 JSON采用与编程语言…

就linux学习的一点感受,学习linux的体会

学linux的驱动设计一:首先先装个虚拟机吧,我觉得这个比较好,有些人建议直接装在硬盘上(我想他们是觉得有点环境压力吧),可我觉得对于没有linux基础的还是先装虚拟机比较好。二:记住一些常用的命令,这个是学…

自动绑定数据源

自动绑定数据源实现数据控件与原始数据的绑定是实现数据展示与编辑的基本前提。在常规的设计模式下实现数据绑定有两种方式:1)第一种方式:在窗体上引用数据对象→逐个拖放控件→分别设置控件与字段的绑定关系。这无疑是个不厌其烦的重复过程&…

Java工具类——通过配置XML验证Map

Java工具类——通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的。但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种就是通过Map来接收前端过来的所有参数&#xff0…

c语言用指针两个字母交换,c语言指针基础之用指针交换两个数(代码实例)

用指针交换两个数:void swap(int *p,int *q) {int temp;temp *p;*p *q;*q temp;}int main(){int a 3, *p,c 5, *q;p &a; //把变量a的地址赋值给指针p,即p指向aq &c;swap(p,q);printf("a %d,c %d\n", a, c);return 0;}注意&am…

如何在 Windows Server 2003、Windows 2000 和 Windows XP 中备份恢复代理的加密文件系统 (EFS) 私钥...

本 文介绍了如何在运行 Microsoft Windows Server 2003、Microsoft Windows 2000 或 Microsoft Windows XP 的计算机上备份恢复代理加密文件系统 (EFS) 私钥。当位于本地计算机上的 EFS 私钥副本丢失时,请使用恢复代理的私钥恢复数据。本文包含有关如何使用证书导出…

你可能从未听过的 Linux 发行版

Hanthana Linux 官方主页:http://www.hanthana.org Hanthana Linux 基于 Fedora,主要面向 IT 教育,默认包含额外的编/解码器及多媒体播放器。它提供可安装到硬盘的 LiveDVD,支持 i686 和 x86_64 架构。 ROSA Linux 官方主页&#…

从壹开始 [vueAdmin后台] 之三 || 动态路由配置 项目快速开发

回顾 今天VS 2019正式发布,实验一波,你安装了么?Blog.Core 预计今天会升级到 Core 3.0 版本。 哈喽大家周三好!本来今天呢要写 Id4 了,但是写到了一半,突然有人问到了关于 Blog.Admin 管理后台的一些问题&a…

c语言支持默认参数吗,嵌入式C语言可以带“默认参数”的函数吗

描述(文章来源:嵌入式时代)使用C开发过程序时,定义函数可以指定默认参数,例如 void fun(int x, int y3); 在调用 fun() 时第二个参数可以不传递,此时 fun() 函数默认第二个参数等于 3,例如 f(1) 就相当于 f(1,3)。这是…

《从零开始学习ASP.NET MVC 1.0》-开天辟地入门篇

《从零开始学习ASP.NET MVC 1.0》 文章导航 (一) 开天辟地入门篇 (二) 识别URL的Routing组件 (三) Controller/Action 深入解析与应用实例 (四) View/Model 全解 (五) ViewEngine 深入解析与应用实例 一.摘要 随着ASP.NET MVC 1.0版本的正式发布, 我将本系列文章也更新到了1.0,…

制作放两个小图片的按钮 - 回复 xhui 的问题

为什么80%的码农都做不了架构师?>>> 问题来源: http://www.cnblogs.com/del/archive/2009/03/12/1409708.html#1475240 本例效果图: 自定义的类(TMyButton): unit Unit2;interfaceusesWindows, Messages, Classes, Graphics, StdCtrls;typeTMyButton c…

ajax传递数组,后台更新

js&#xff1a; var rows $("#stu_reg_table").datagrid("getSelections");if(rows ! ""){$.messager.confirm("系统确认","您确认同意该申请吗&#xff1f;",function (r) {if(r){var id[];for(i0;i<rows.length;i){id…

c语言 指针 pdf,深入理解c指针 PDF扫描版[33MB]

深入理解C指针 内容简介&#xff1a;深入理解C指针和内存管理&#xff0c;提升编程效率&#xff01;这是一本实战型图书&#xff0c;通过它&#xff0c;读者可以掌握指针动态操控内存的机制、对数据结构的增强支持&#xff0c;以及访问硬件等技术。本书详细阐述了如何在数组、字…

使用SQL Server 2008提供的表分区向导

表分区&#xff08;Partition Table)是自从SQL Server 2005就开始提供的功能&#xff0c;解决的问题是大型表的存储和查询。 我们之前大致的语法是这样的 -- -- 演示&#xff1a;陈希章 -- 如何创建分区函数 -- 如何创建分区架构 -- 如何创建分区表 -- alter database adventu…

唤醒控件曾经拥有的能力

为什么80%的码农都做不了架构师&#xff1f;>>> 控件的祖先 TControl 有很多功能, 但它的有些子孙确丧失了很多(为了专用). 譬如 TBevel 就没有把一些常规的事件继承下来, 那些没有被继承的功能一般都隐藏在 protected 区, 如果重新继承是可以使用的. 这里尝试了另…

Android 面向切面编程-aspjectj应用

先附上自己基于aspject封装的aop 插件 1.为什么要用切面 随着业务越来越复杂&#xff0c;项目中的模块可能越来越多&#xff0c; 面向切面可以减少模块间的耦合&#xff0c;提高模块的复用率 2.aspjectj语法 android aop框架 有好几种&#xff0c;不过aspjectj应该算最成熟了&…

c语言掌上通,计算机二级C语言掌上通在哪下载安装?计算机掌上通好用吗?

计算机二级C语言掌上通在哪下载安装&#xff1f;计算机二级C语言掌上通好用吗&#xff1f;相信很多想要考计算机二级C语言的学生都在努力的复习背题库&#xff0c;而现在只要使用计算机二级C语言掌上通就能够随时随地刷题了。一、计算机二级C语言掌上通怎么下载1、滑动手机&…

[原]RHCS集群的服务切换测试札记

估计使用Red Hat或者CentOS做HA集群的朋友多数都会选择RedHat Cluster Suite&#xff08;RHCS&#xff09;这个套件来做吧。本篇主要记录构建及测试时候的情况。 poweroff 和 reboot 这种常规操作的服务切换取决于 recovery"relocate" 这个参数&#xff0c;在图形化界…

理解 Delphi 的类(十) - 深入方法[17] - 提前声明

为什么80%的码农都做不了架构师&#xff1f;>>> //要点17: 如果前面的方法要调用后面的方法, 后面的方法需要提前声明 function MyFunB(x: Integer): Integer; forward; {使用 forward 指示字提前声明}function MyFunA(x: Integer): Integer; beginResult : MyFunB…