使用模块级变量,将连接数据库的代码放在Class_Initialize()事件中,这样Dll内部的函数就可以直接访问这个变量
解决方案 »
- 我的的自定义控件的坐标如何取得呢,奇怪呢
- 如何把一个窗体在另一个窗体的某一控件设备环境中显示?
- 我的主界面有三个picturebox,我想点击一个就知道点击的是哪个
- 串口通信如何利用MSCOMM控件接收和发送数据?
- 高分求教!!用TypeLib Information封装好多个类之后,如何根据TypeLibInfo中的信息调用该类中的函数?
- 怎样用这个.dll文件?
- 如何在窗体加载时检测注册表的信息并反馈回来?
- 很急!如何对由DATA和DBGRID控件构成的系统使用FILTER(过滤),我是VB初学者
- 网格控件可不可以在运行时再绑定其数据源???与RECORDSET对像可以吗?谢谢。
- 有没有uuencode的编码和解码控件?或者使用什么方法实现?
- 关于 VB 的文件操作
- 多线程,求助
如果外部程序需要访问这个变量,可以用Public来定义,还需要编写一些代码。
如果只是Dll内部调用直接用Private来定义。
好像不会激发这个时间么!
把你的objConn 定义为模块级别,这样就可以在模块内全局通用。
方法是在模块的“通用”部分定义你的变量,也就是在所有函数之外,class程序的一开始部分。
然后在类初始化的时候初始化它,或者在你的方法内部初始化,并用一个变量标记它是否已经初始化过。
例如:
Option Explicit'保持属性值的局部变量
Private mvarDBConnectionString As String '局部复制
Private objConn As ADODB.Connection
Private objRecordSet As ADODB.Recordset
Private Sub Class_Initialize()
On Error Resume Next
Set objConn = New ADODB.Connection
Set objRecordSet = New ADODB.Recordset
On Error GoTo 0
End Sub
然后在你需要的函数里面去连接数据库(别忘了用变量做一个状态记录)。这样只是在每次创建COM实例的时候才创建该对象,并不会因为创建COM实例之后每次调用方法就要创建该对象。