OLE即對象聯接和嵌入技術,使用這一技術,我們在VB中不用任何控件就可輕松訪問Oracle數據庫的內容。在安裝了Oracle的Oracle Object for OLE後,就可以使用Oracle提供的OLE對象方便地訪問數據庫的內容了。
運行下面示例程序的前提是你必須安裝了Oracle的客戶端或Personal Oracle,並且在安裝時選擇了Oracle Object for OLE選項,否則你將會得到「無法建立對象」的錯誤信息。
首先,我們要建立與Oracle數據庫的聯接,這裏我們使用到兩個對象OraSession對象和OraDatabase對象。OraSession對象用于治理OraDatabase對象,使用OraSession對象的OpenDatabase方法可以建立OraDatabase對象,同時建立與Oracle數據庫的聯接以訪問數據庫的內容。下面的例子演示了如何使用OraSession對象和OraDatabase對象建立與Oracle數據庫的聯接:
Private Sub Command_Click()
Dim OraSession As Object
Dim OraDatabase As Object
Dim Ls_username As String, Ls_passWord As String, Ls_server As String
Ls_server = ""
'聯接本地Oracle數據庫
Ls_username = "system"
'用戶名爲 system
Ls_password = "manager"
'密碼爲 manager
'建立 OraSession 對象
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
'錯誤處理
On Error GoTo Connect_Err:
'建立OraDatabase 對象以聯接到Oracle數據庫
Set OraDatabase = OraSession.DbOpenDatabase(Ls_server, Ls_username + "/" + Ls_password, 0&&)
MsgBox "數據庫聯接成功!", vbOKOnly + vbInformation, "提示信息"
On Error GoTo 0
Exit Sub
Connect_err:
If InStr(OraSession.LastServerErrText, "ORA-01017") Then
MsgBox "無效的用戶名和密碼,數據庫聯接不成功!", vbOKOnly + vbCritical, "提示信息"
Else
MsgBox "數據庫聯接不成功!請查看下面的出錯信息:"+Chr(13)+OraSession.LastServerErrText, vbOKOnly + vbCritical, "提示信息"
End If
End Sub
建立了數據庫聯接後我們就可以運行相應的SQL命令對數據庫的內容進行相應的操作了。對于非查詢SQL命令(非SELECT命令),可以使用OraDatabase對象的ExecuteSQL方法執行,而對數據庫的查詢則可使用OraDatabase對象的CreateDynaset方法建立OraDynaset對象來執行查詢,然後建立OraFields對象對查詢結果進行檢索。下面我們分別舉例演示如何新建一個用戶然後查詢並列出DBA_USERS視圖中USERNAME字段的內容,程序如下:
Private Sub Command_Click()
Dim OraSession As Object
Dim OraDatabase As Object
Dim OraDynaset As Object
Dim OraFields As Object
Dim Ls_username As String, Ls_password As String, Ls_server As String
Dim Ls_mess As String
Dim Li_I As Integer
Ls_server = ""
'聯接本地Oracle數據庫
Ls_username = "system"
'用戶名爲 system
Ls_password = "manager"
'密碼爲 manager
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
On Error GoTo Connect_Err:
Set OraDatabase = OraSession.DbOpenDatabase(Ls_server, Ls_username + "/" + Ls_password, 0&&)
'執行SQL命令出錯後跳轉到Sql_err
On Error GoTo Sql_err:
Set OraDynaset = OraDatabase.DbCreateDynaset("SELECT USERNAME FROM DBA_USERS", 0&&)
If OraDynaset.RecordCount > 0 Then
'建立OraFields對象對查詢的內容進行檢索
Set OraFields = OraDynaset.Fields
Ls_mess = 「用戶列表:」 + Chr(13)
Ls_mess = Ls_mess + OraFields(「USERNAME」).Value
for Li_I = 1 to OraDynaset.RecordCount - 1
OraDynaset. MoveNext
Ls_mess = Ls_mess + Chr(13) + OraFields(「USERNAME」).Value
Next Li_I
MsgBox Ls_mess , vbOKOnly + vbInformation, "查詢結果"
Else
MsgBox "未查詢到相應信息!", vbOKOnly + vbInformation, "提示信息"
End If
'創建新用戶TEST,密碼爲TEST
OraDatabase.ExecuteSQL ("CREATE USER TEST IDENTIFIED BY TEST")
MsgBox "用戶創建成功!", vbOKOnly + vbInformation, "提示信息"
Set OraDynaset = OraDatabase.DbCreateDynaset("SELECT USERNAME FROM DBA_USERS", 0&&)
If OraDynaset.RecordCount > 0 Then
'建立OraFields對象對查詢的內容進行檢索
Set OraFields = OraDynaset.Fields
Ls_mess = 「用戶列表:」 + Chr(13)
Ls_mess = Ls_mess + OraFields(「USERNAME」).Value
for Li_I = 1 to OraDynaset.RecordCount - 1
OraDynaset. MoveNext
Ls_mess = Ls_mess + Chr(13) + OraFields(「USERNAME」).Value
Next Li_I
MsgBox Ls_mess , vbOKOnly + vbInformation, "用戶建立後查詢結果"
Else
MsgBox "未查詢到相應信息!", vbOKOnly + vbInformation, "提示信息"
End If
Exit Sub
Connect_err:
If InStr(OraSession.LastServerErrText, "ORA-01017") Then
MsgBox "無效的用戶名和密碼,數據庫聯接不成功!", vbOKOnly + vbCritical, "提示信息"
Else
MsgBox "數據庫聯接不成功!請查看下面的出錯信息:" + Chr(13) + OraSession.LastServerErrText, vbOKOnly + vbCritical, "提示信息"
End If
Exit Sub
Sql_err:
If OraDatabase.LastServerErr <> 0 Then
MsgBox "數據庫操作出錯!請查看下面的出錯信息:" + Chr(13) + OraDatabase.LastServerErrText, vbOKOnly + vbCritical, "提示信息"
End If
End Sub
以上只是簡要講述了在VB中使用Oracle的OLE對象聯接並訪問數據庫的方法,當然Oracle所提供的OLE對象並不僅僅局限于上面提到的,而功能也遠不止于此,有愛好的讀者可以查看Oracle的隨機幫助信息,用OLE對象構造出功能強大的應用程序。
上述程序在Visual Basic 5.0下開發,數據庫使用Personal Oracle 8.0.4或Oracle 8.1.6 for NT並均調試通過。