我在一个类中只声明一个sqlconnnection对象,并且这个类里面有很多访问数据库的函数,每个访问数据库的函数都共用这个sqlconnection对象,每执行一个访问数据库的函数就直接打开然后再关闭sqlconnection对象,这样做有没有什么不妥? 恳请大家赐教

解决方案 »

  1.   

    不好,你还要考虑互斥访问。
    sqlconnection自己有连接池的,你只管用时连接,不用时关闭就可以了
      

  2.   

    对于SqlServer来说,不要共同使用同一个连接,只要保证每次打开一个连接后使用Close关闭就可以了.SqlServer是会自动的来管理它的链接池的.
      

  3.   

    不要再每个函数中打开关闭,这样如果要同时调用1个类中的几个函数,就要打开、关闭几次链接了。先你的类继承class1继承IDisposable接口
    可以在函数中打开链接(打开前要判断是否已经打开),但不要关闭,
    在类的public void Dispose()方法中关闭链接,这个方法是继承IDisposable有的,
    然后是使用class1的时候这样使用就行了
    using(class1 cls = new class1())
    {
           //调用class1中的函数
    }这样再using完的时候会自动调用Dispose方法来关闭链接。
      

  4.   

    还有我的SqlCommand对象也是这样做的,sqlcommand对象也不能这样做吗?
      

  5.   

    都不行。你想想在多线程的时候这种用法会出现什么情况,或者,你在方法A里使用这些对象的过程中需要调用方法B,而方法B也要使用这些对象,这时候,你怎么办?
      

  6.   

    用完了就要关闭,ADO.Net自己会管理连接池的.
    其实conn.Close并不是真的关闭了连接,它只是把这个连接放到连接池里去了.
    http://msdn2.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnection(VS.80).aspx