目前本项目采用了三层架构开发的思路.有  
1个数据库连接类(1个Dll文件,conDatabase.dll)  
1个实体类(1个Dll文件),    
6个数据层类(6个Dll文件),    
6个业务层类(6个Dll文件)  
 
数据库连接类conDatabase.dll  代码如下:  
Option  Explicit  
 
'数据库公用连接对象  
Public  conLiberp  As  New  ADODB.Connection  
 
'local  variable(s)  to  hold  property  value(s)  
Private  mvarconString  As  String  'local  copy  
 
Public  Property  Get  conString()  As  String  
'used  when  retrieving  value  of  a  property,  on  the  right  side  of  an  assignment.  
'Syntax:  Debug.Print  X.conString  
       mvarconString  =  "DRIVER={MySQL  ODBC  3.51  Driver};"  &  "SERVER=192.168.112.2;"  &  "  DATABASE=liberp;"  &  "UID=admin;PWD=libi;  OPTION=3"  
       conString  =  mvarconString  
End  Property  
 
'名        称:ConnOpen  
'功        能:打开liberp数据库连接  
'输入参数:无  
'输出参数:无  
'返  回  值:无  
Public  Sub  ConnOpen()  
 
       conLiberp.ConnectionString  =  "DRIVER={MySQL  ODBC  3.51  Driver};"  &  "SERVER=192.168.112.2;"  &  "  DATABASE=liberp;"  &  "UID=admin;PWD=libi;  OPTION=3"  
       conLiberp.Open  
 
End  Sub  
 
'名        称:ConnClose  
'功        能:关闭liberp数据库连接  
'输入参数:无  
'输出参数:无  
'返  回  值:无  
Public  Sub  ConnClose()  
 
       conLiberp.Close  
 
End  Sub  
 
 
 
6个数据层类(6个dll文件)的53个类文件都有下列代码:  
 
Private  objconn  As  conDatabase.clsConnection  
objconn.ConnOpen  
 
导致打开了53次数据库连接对象,消耗了内存,运行速度缓慢  
 
有什么办法能只要打开一次数据库连接就行了,  
怎么解决数据库连接在多个工程dll中重用的问题  

解决方案 »

  1.   

    同意2楼的说法...
    非常严重的就是用了共用的AS.这是非常不好的习惯!
    如只是一些普通的OA软件,绝对可以用集合把数据先保存用做查找.只需要添加,修改,删除才连接数据库...当然,如果针对些非要挂着连接不可的软件,可以活用RS把内存控制,进可能不要用乐观锁!直接rs.Execute(SqlString)
      

  2.   

    数据库有连接池的,不用担心
      
    *****************************************************************************
    欢迎使用CSDN论坛阅读器 : CSDN Reader(附全部源代码) 
    http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  3.   

    这样会频繁的连接数据库呀,不太好吧.比如一次按钮的单击操作就会发生连接数据库和断开数据库的操作,可是用户操作时,会反复对按钮进行单击的,每单击一次,就连一次数据库,再断一次数据库,不太好吧.期待回复.谢-------------------------
    没用过asp 吧?
    那个连接,断开 多的去了
      

  4.   

    当然有办法,你把数据库连接类在界面层实例化,然后把这个数据库连接类的实例用参数传给各个上层类,在每个上层类中声明一个数据库连接类的变量用来保存这个数据库连接类的实例(不是实例化,而是使用Set去引用一个实例),这样在每个上层类里都可以方便的处理数据库了,本人的程序结构与你所说的类似,我就是这样用的
       要把一个类看作是一个数据类型,这样你才能明白我说的意思
       这种做法在内存中仍然只有一个类实例,上层类中有的只是这个实例的引用
       本人还使用了另外的一种使用类的机制,我的程序一般都会使用几十到上百个类,每个类的功能清楚,互相之间协作良好,使用的时候也很方便