如果 SqlConnection 超出范围,则不会将其关闭。因此,除非将代码放在 using 语句内,否则必须调用 Close 或 Dispose 来显式关闭连接。它们在功能上是等效的。

区别:

Close ()方法回滚任何挂起的事务。然后,它将连接释放到连接池,或者在连接池被禁用的情况下关闭连接,应用程序可以多次调用 Close。不会生成任何异常。如果将连接池值 Pooling 设置为 true 或 yes,则也会释放物理连接。

dispose()方法实际是和close()做的同一件事,唯一的区别是Dispose方法清空了connectionString,即设置为了null.

using表示在{}区间后,自动调用Dispose方法,保证对象被销毁。 using只能用在集成了IDispose接口的类上

示例:

SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=northwind;User ID=sa;Password=steveg");

con.Open();

con.Close();

con.Open();

con.Dispose();

con.Open();

close掉的connection可以重新open,dispose的不行,因为connectionstring清空了,会抛出InvalidOperationException提示The ConnectionString property has not been initialized,但此时sqlconnection对象还在。

如果dispose后给connectionString重新赋值,则不会报错。

由此得出的结论是不管是dispose还是close都不会销毁对象,即不会释放内存,它们会把sqlconnection对象丢到连接池中,那此对象什么时候销毁呢?我觉得应该是connection timeout设置的时间内,如果程序中没有向连接池发出请求说要connection对象,sqlconnection对象便会销毁,这也是连接池存在的意义。

转载于:https://www.cnblogs.com/dyufei/archive/2010/03/19/2573941.html

SqlConnection中 Close()Dispose()Using()的区别相关推荐

  1. java中的dispose()方法

    java中的dispose()方法 先来看看 JAVA 1.5 的帮助文档的原文 - dispose - public void dispose() ****** 释放由此 Window.其子组件及其 ...

  2. SqlCommand.CommandTimeout 和 SqlConnection.ConnectionTimeout 这两个的区别

    http://blog.csdn.net/long2006sky/article/details/1683459 今天碰到了一个查询异常问题,上网查了一下,感谢原创和译者 如果你使用的数据库连接类是 ...

  3. dispose 模式 java_C#中标准Dispose模式的实现

    需要明确一下C#程序(或者说.NET)中的资源.简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类: 托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象: 非托管资源:不 ...

  4. java中dispose什么意思_java中的dispose()方法

    先来看看 JAVA 1.5 的帮助文档的原文 – dispose – public void dispose() 释放由此 Window.其子组件及其拥有的所有子组件所使用的所有本机屏幕资源.即这些 ...

  5. python中break和continue的区别

    python中break和continue的区别 break 结束for 或者while 循环  后面还没循环到的 不再循环 continue 当满足某种条件时结束当前值的循环 后面没有循环的继续循环 ...

  6. java中separator_java - File.separator和路径中的斜杠之间的区别

    java - File.separator和路径中的斜杠之间的区别 在Java Path-String中使用/和普通的File.separator有什么区别? 与双反斜杠相比,/平台独立似乎不是原因, ...

  7. PHP中self和static的区别,php中self与static的区别

    原文链接,猛击这里. php中self与static的区别 通过一些示例,我们可以很容易看出self和static的区别.假定我们有class Car – 它有两个方法,model和getModel. ...

  8. php 抽象类 接口 区别,PHP中抽象类、接口的区别与选择分析

    本文实例分析了PHP中抽象类.接口的区别与选择.分享给大家供大家参考,具体如下: 区别: 1.对接口的使用是通过关键字implements.对抽象类的使用是通过关键字extends.当然接口也可以通过 ...

  9. php $this self,php中self与$this的区别

    学习php中self与$this的区别. 先来看下parent与self的例子: /* * parent与self的区别 * by www.jbxue.com */ class A{ function ...

  10. mysql中char与varchar的区别分析(补充一句,int和integer没区别)

    转自:http://www.jb51.net/article/23575.htm 在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定 ...

最新文章

  1. java并发编程_Java并发编程之 synchronized
  2. php 打开报错,php模式下 运行start.php 报错
  3. JavaScript 的性能优化:加载和执行
  4. Microsoft photosynth(图片三维展示)
  5. 前端学习(3207):js中的事件绑定
  6. 动态规划算法的应用模型
  7. Argument list too long 文件数过多
  8. Linux思维导图之inode、mv、cp和硬软链接
  9. additemdecoration重复_安卓中另一个强大的大量数量集控件RecyclerView
  10. hl3150cdn打印不了照片_揭秘:薇娅力荐国产品牌极印,照片打印机爆卖的秘密
  11. div中赋值html字符串
  12. m7405d粉盒清零方法_联想各种打印机多功能一体机硒鼓清零方法汇总
  13. c 显示服务器相关的图片到对话框,使用MFC CImage类绘制PNG图片时遇到的问题
  14. 使用 vue 开发一个简单的滑块拖动验证码
  15. solidworks图纸模板添加_Solidworks工程图 #07 如何在工程图模板中添加自定义属性链接...
  16. php7isapi,Windows7 IIS7下以FastCgi和ISAPI方法安装配置PHP5教程
  17. 外贸出口业务管理解决方案丨汇信
  18. 用计算机弹麻雀,玩麻雀弹
  19. 我的RHCE认证考试经历
  20. 微软服务器登录不上,微软账号无法登录怎么办

热门文章

  1. pmp每日三题(2022年2月23日)
  2. linux 系统监控、诊断工具之 top 详解
  3. Django框架Day3------之Models
  4. LeetCode OJ 113. Path Sum II
  5. UIApplication,UIWindow,UIViewController,UIView(layer)
  6. C#实现窗口最小化到系统托盘
  7. ASP.NET自带的散列加密口令【转】
  8. python统计库_python-科学计算常用库
  9. 卷积和池化matlab 实现,UFLDL新版教程与编程练习(七):Convolution and Pooling(卷积和池化)...
  10. class转java_java动态代理实现与原理详细分析