CommandBehavior.CloseConnection有何作用
/// <summary>
/// 常见的获取SqlDataReader方法 /// 通常的数据访问层都会提供这个方法 /// </summary> static SqlDataReader GetReader() { //通过连接字符串获取连接 SqlConnection con = new SqlConnection(conn_String); try { //打开连接,执行查询 //并且返回SqlDataReader con.Open(); SqlCommand cmd = con.CreateCommand(); cmd.CommandText = Sql; SqlDataReader dr = cmd.ExecuteReader(); return dr; } finally { //这里的代码处于两难的境地 //如果这里执行关闭:con.Close();那返回的 SqlDataReader将毫无用处,因为其 //依赖的连接已经关闭 //如果这里不执行con.Close();那返回后该连接 将永远无法关闭,因为调用方无法 //得到连接对象 } } |
partial class UseCommandBehavior
{ //数据库看连接字符串 const String conn_String = "Server=localhost;Integrated Security=true;database=NetTest"; const String Sql = "select * from dbo.DepartCost"; /// <summary> /// 使用CommandBehavior.CloseConnection /// </summary> /// <param name="con">为了测试需要,传入连接对象</param> static SqlDataReader GetReader_CloseConnection(SqlConnection con) { try { //打开连接,执行查询 //并且返回SqlDataReader con.Open(); SqlCommand cmd = con.CreateCommand(); cmd.CommandText = Sql; SqlDataReader dr = cmd.ExecuteReader (CommandBehavior.CloseConnection); return dr; } finally { //因为使用了CommandBehavior.CloseConnection, //这里不需要关闭连接 //con.Close(); } } /// <summary> /// 不使用CommandBehavior.CloseConnection /// </summary> /// <param name="con">为了测试需要,传入连接对象</param> static SqlDataReader GetReader_NoCloseConnection(SqlConnection con) { try { //打开连接,执行查询 //并且返回SqlDataReader con.Open(); SqlCommand cmd = con.CreateCommand(); cmd.CommandText = Sql; SqlDataReader dr = cmd.ExecuteReader(); return dr; } finally { //为了使返回的SqlDataReader可用,这里不能关闭连接 //con.Close(); } } } |
partial class UseCommandBehavior
{ /// <summary> /// 测试方法 /// </summary> static void Main(string[] args) { //建立连接 SqlConnection con = new SqlConnection(conn_String); try { //测试使用了CommandBehavior.CloseConnection的方法 Console.WriteLine("测试使用了CommandBehavior. CloseConnection的方法:"); SqlDataReader sdr = GetReader_CloseConnection(con); while (sdr.Read()) { } sdr.Close(); Console.WriteLine("读取完毕后的连接状态:" + con.State.ToString()); //测试没有使用CommandBehavior.CloseConnection的方法 Console.WriteLine("测试没有使用CommandBehavior. CloseConnection的方法:"); SqlDataReader sdr1 = GetReader_NoCloseConnection(con); while (sdr1.Read()) { } sdr1.Close(); Console.WriteLine("读取完毕后的连接状态:" + con.State.ToString()); Console.Read(); } finally { //确保连接被关闭 if (con.State != ConnectionState.Closed) con.Close(); } } } |
转载于:https://www.cnblogs.com/yitongtianxia59/archive/2009/07/24/1529904.html
CommandBehavior.CloseConnection有何作用相关推荐
- CommandBehavior.CloseConnection的使用
分析问题 由于流模式读取数据库的特点,在具体应用时很难确定数据库连接何时才能被关闭,因为读取的动作是连续进行的,下面是一个常见的数据访问层的静态方法: ///<summary>/// 常见 ...
- 连接池中溺死重生,多亏NET 连接池救生员
您的应用程序会"沉没",还是会"游泳"?"NET 连接池救生员",msdn上这篇有名的文章n久之前已经拜读过n次,当时还暗自庆幸,我的程序没 ...
- 巧用枚举CommandBehavior关闭SqlDataReader联接数据库时的conn.open状态
编码过程中使用SqlDataReader 来操作数据库时,你是否每次在调用完你的数据库方法后,再手动调用方法或写代码关闭数据库联接呢?(呵呵 我以前是这样做的 见笑) 下面的方法可以完成解决此问题了, ...
- 一步一步写自己的SqlHelper类库
前言: 一开始不懂SqlHelper是什么,以为是新东西.第一遍大量的查资料,在csdn上找到很多人写好的SqlHelper类,发现每个人写的很像,但又都不一样,找了一个能用的上的,敲了一遍别人的代码 ...
- 使用ADO.NET 的最佳实践(zz)
数据访问:使用 ADO.NET 的最佳实践(ADO.NET 技术文档) 发布日期: 4/1/2004 | 更新日期: 4/1/2004 摘要:编写 Microsoft ADO.NET 代码的最佳实践, ...
- 如何创建一个用弹出窗口来查看详细信息的超链接列
如何创建一个用弹出窗口来查看详细信息的超链接列 出处:www.dotnetjunkie.com 这篇文章来自于一位忠实的DotNetJunkie的建议,他最初发了一封email给我们, 要求我们给出一 ...
- 对比.Net PetShop和Duwamish来探讨Ado.Net的数据库编程模式
作者:卢彦 .NET PetShop和Duwamish简单介绍 相信大家一定听说过有名的"宠物店大战",没错,本文的主角之一就是获胜方.NET PetShop,微软号称以27倍的速 ...
- .Net SqlDbHelper
using System.Configuration; using System.Data.SqlClient; using System.Data;namespace ExamDAL {class ...
- Ajax与JSON的一些总结(转)
1.1.1 摘要 Ajax技术的核心是XMLHttpRequest对象(简称XHR),可以通过使用XHR对象获取到服务器的数据,然后再通过DOM将数据插入到页面中呈现.虽然名字中包含XML,但Ajax ...
最新文章
- html字体颜色代码表
- openresty获取nginx 请求方法
- javascript 分号_让我们谈谈JavaScript中的分号
- recipe for target 'aclocal.m4' failed
- 一个老程序员的心里话---想创业的技术人员可以看
- Spark API 之 cogroup 使用
- 手机配置都赶上笔记本了
- 关于大小端转换整理总结(包含原始方式、Qt方式)
- Java解析省市县树形结构工具类
- qcloud_cos 的安装问题
- 国家级专精特新小巨人企业是什么?
- 软件测试的自我修养之学习自动化测试
- 在线教育平台、网校搭建、远程教育平台搭建技术选型(268教育)
- php单例模式的常见应用场景
- C语言实现isalpha函数功能(附完整源码)
- H264 AVCC 格式转 ANNEX B格式
- 算法导论答案 第11章:散列表
- Unix/Linux编程:进程间通信(IPC)总结
- 雷达基本组成(以单基地脉冲雷达为例)
- 奶茶介绍-网页实验报告
热门文章
- Oracle 内置函数
- ios学习笔记——Block块小结
- 从IEEE754标准谈C语言浮点数据类型
- 三星s10android10功能,三星S10系列现场上手体验:“安卓机皇”真的名副其实
- centos7 python3安装numpy_Centos7安装python3、numpy、scipy、matplotlib、pandas等
- mysql多列索引不全用,MySQL多列索引的生效规则
- python中strip函数_让你整明白python strip函数妙用
- linux中文系统装offci,Ubuntu 14.04 LTS中安装fcitx中文输入法的教程
- linux操作系统教学,Linux操作系统教学视频
- linux+cp+吃内存怎么办,Linux吃掉了我的内存