hConnection方法同OpenConnection方法很相似,被用于停止状态或独立的rdoConnection对象。
这里以独立的rdoConnection对象为例说明与SQL Server的连接。
Public WithEvents Eng As rdoEngine
Public WithEvents Cn As rdoConnection
Private Sub Form_Load()
Set Eng = New rdoEngine
Set Cn = New rdoConnection
With Cn
.Connect = “UID = ; PWD = ;” & “DATABASE = pubs; DSN = biblio”
.LoginTimeout = 5
.EstablishConnection rdoDriverNoPromt, True, rdAsyncEnable
End With
End Sub
在这个例子中,Form_Load函数对rdoEngine和rdoConnection对象进行初始化。这里有一点需要注意,rdoConnection对象是处于独立的状态之下,即使是处于未连接状态也可以设置属性的值。
接下来是rdoConnect对象的事件处理程序。从RDO 2.0起可以实现异步方式(rdAsyncEn able),EstablishConnection就设定为该值。在异步状态下,不必等待与数据库的连接,程序可以迅速从Form_Load函数中退出。
然后是BeforeConnect事件,该处理在与数据库的连接开始以前被激发,此时不能进行有关终止连接的操作:
Private Sub Cn_BeforeConnect(ConnetString As String, Prompt As Variant)
MsgBox “正在连接” & ConnectString, vbOKOnly, “连接前”
End Sub
连接完成之后的事件处理:
Private Sub Cn_Connect(ByVal ErrorOccurred As Boolean)
Dim M As String
If ErrorOccurred Then
For Each er In rdoErrors
M = M & er & vbCrLf & M
Next
MsgBox “连接失败” & vbCrLf & M
Else
MsgBox “连接成功”
''这是确认连接状态的测试代码
Cn.Excute “use pubs”
End If
End Sub
RDO连接处理结束后,在该事件中确认连接成功与否。连接成功的情况下ErrorOccurred 返回False,失败时为True,由此可以对rdoErrors集合进行检测:
Private Sub Eng_InfoMessage()
For Each er In rdoErrors
Debug.Print er
Next
RdoErrors.Clear
End Sub
不能与SQL Server连接的原因多种多样,有可能是由于对数据库的访问权限、网络连接
问题、数据库表的信息错误、SQL Server同时连接的许可数、资源不足等等,具体情况需要与网络管理员商量。
断开连接的操作非常简单,但又很重要,因为RDO不提供自动断开的功能。
Cn.Close
Set Cn = Nothing ''释放对象所占的内存资源
En.Close
Set En = Nothing ''释放对象所占的内存资源
VB是对象语言,Form、ActiveX控件也都是对象。使用对象后必须养成将对象设为Noth