我在一个程序里,需要频繁的访问本地Access数据库中的表,我是在每次访问的时候都要新建连接,打开连接,再定义数据集,访问表!如下: Set Cn = New ADODB.Connection
ConnectString = "DBQ=" + App.Path + "\table.mdb" + ";uid=;pwd=;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
            Cn.ConnectionString = ConnectString
            Cn.ConnectionTimeout = 3
            Cn.Open
            
          Set Rs = New ADODB.Recordset
            Rs.CursorType = adOpenStatic
          Rs.LockType = adLockReadOnly
            SqlString = "SELECT * FROM table1 ORDER BY datemonth,dateday"
            
            Rs.Open SqlString, ConnectString, , , adCmdText
            
            ******************            Rs.Close
            Set Rs = Nothing
            Cn.Close
            Set Cn = Nothing请问有必要这么做吗?这么做会不会使每次的访问时间大大增加?如果我在程序开始初始化的时候进行连接,每次访问数据表的时候只需Set Rs = New ADODB.Recordset ,要然后到程序结束的时候再去断开连接
释放 cn 可以吗?请各位有经验的高手指点!

解决方案 »

  1.   

    连接是一个非常占用资源的东西,如果你不需要同时访问两个或两个以上的数据库,最好在各个模块中共享一个连接。
    使用时:
    set commandobject.activeconnection = yourconnectionobject
    set recordsetobject.activeconnection = yourconnectionobject
    实际上,你的代码并没有使用到你建立的连接对象。
    当你使用记录集的Open方法并使用连接字符串打开此记录集的话,记录集将在其内部建立一个隐藏的连接,所以你需要把Open方法改一下。不过如果你注册到使用了微软的 MTS 或者 COM+ 的有关服务的话,这些服务将自动为你建立连接池。