zoukankan      html  css  js  c++  java
  • 在析构函数中关闭 SqlConnection 连接

        最近在模仿师父搭一个框架,该系统原本是用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"这个异常了。

  • 相关阅读:
    css3动画栈效果_1
    页面滚动时出现固定导航
    jquery定位到指定元素
    seajs之学习2
    seajs之学习1
    变态ie6之要求css与页面编码一致引发的问题
    ASP.NET学习笔记一
    C++学习笔记三(类和对象)
    C++学习笔记二
    unity3D学习笔记一
  • 原文地址:https://www.cnblogs.com/HopeGi/p/2682616.html
Copyright © 2011-2022 走看看