博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在析构函数中关闭 SqlConnection 连接
阅读量:5058 次
发布时间:2019-06-12

本文共 856 字,大约阅读时间需要 2 分钟。

    最近在模仿师父搭一个框架,该系统原本是用MySQL数据库的,在析构函数理关闭MySqlConnection连接没有抛异常,可是我换成了SQL Server数据库,在析构函数里关闭 SqlConnection连接,异常抛出来了:Internal .Net Framework Data Provider error 1。

    网上的有个说法是不要析构函数里调用非托管类型。可是为什么用MySqlConnection时没事。还有另一种说法,把关闭连接(close())封装成方法,调用那个方法就行。可是我本来就已经将关闭连接封装了一个方法,照样是报错。

  后来终于找到一个可行的解决办法了:在原本有析构函数的类都实现IDisposable接口,在Dispose方法里调用close()方法,调用该类时使用using语句块。

代码如下:

定义类时

public class DBControler:IDisposable    {        public DBUnit dbUnit = null;//封装了SqlConnection         ////代码略     public void Dispose()        {            dbUnit.Close(); //封装了SqlConnection的close()方法        }       ///代码略   }

调用类时

using (DBControler db = new DBControler())            {                   ///相关的操作                            }

原本的析构函数可以去掉了。这样就不会再抛"Internal .Net Framework Data Provider error 1"这个异常了。

 

转载于:https://www.cnblogs.com/HopeGi/archive/2012/09/12/2682616.html

你可能感兴趣的文章
mysqladmin
查看>>
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
SVN服务器搭建和使用(三)(转载)
查看>>
Android 自定义View (三) 圆环交替 等待效果
查看>>
设置虚拟机虚拟机中fedora上网配置-bridge连接方式(图解)
查看>>
HEVC播放器出炉,迅雷看看支持H.265
查看>>
[置顶] Android仿人人客户端(v5.7.1)——人人授权访问界面
查看>>
Eclipse 调试的时候Tomcat报错启动不了
查看>>
【安卓5】高级控件——拖动条SeekBar
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>
Android入门之文件系统操作(二)文件操作相关指令
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
java学习笔记之String类
查看>>
pymysql操作mysql
查看>>
Linux服务器删除乱码文件/文件夹的方法
查看>>
牛腩记账本core版本源码
查看>>
Word Break II
查看>>
UVA 11082 Matrix Decompressing 矩阵解压(最大流,经典)
查看>>
jdk从1.8降到jdk1.7失败
查看>>
一些关于IO流的问题
查看>>