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
&&)
MsgBox
數據庫聯接成功!
vbOKOnly + vbInformation
提示信息
On Error GoTo
Exit Sub
Connect_err:
If InStr(OraSession
LastServerErrText
ORA
) Then
MsgBox
無效的用戶名和密碼
數據庫聯接不成功!
vbOKOnly + vbCritical
提示信息
Else
MsgBox
數據庫聯接不成功!請查看下面的出錯信息
+Chr(
)+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
&&)
執行SQL命令出錯後跳轉到Sql_err
On Error GoTo Sql_err:
Set OraDynaset = OraDatabase
DbCreateDynaset(
SELECT USERNAME FROM DBA_USERS
&&)
If OraDynaset
RecordCount >
Then
建立OraFields對象對查詢的內容進行檢索
Set OraFields = OraDynaset
Fields
Ls_mess =
用戶列表
+ Chr(
)
Ls_mess = Ls_mess + OraFields(
USERNAME
)
Value
for Li_I =
to OraDynaset
RecordCount
OraDynaset
MoveNext
Ls_mess = Ls_mess + Chr(
) + 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
&&)
If OraDynaset
RecordCount >
Then
建立OraFields對象對查詢的內容進行檢索
Set OraFields = OraDynaset
Fields
Ls_mess =
用戶列表
+ Chr(
)
Ls_mess = Ls_mess + OraFields(
USERNAME
)
Value
for Li_I =
to OraDynaset
RecordCount
OraDynaset
MoveNext
Ls_mess = Ls_mess + Chr(
) + 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
) Then
MsgBox
無效的用戶名和密碼
數據庫聯接不成功!
vbOKOnly + vbCritical
提示信息
Else
MsgBox
數據庫聯接不成功!請查看下面的出錯信息
+ Chr(
) + OraSession
LastServerErrText
vbOKOnly + vbCritical
提示信息
End If
Exit Sub
Sql_err:
If OraDatabase
LastServerErr <>
Then
MsgBox
數據庫操作出錯!請查看下面的出錯信息
+ Chr(
) + OraDatabase
LastServerErrText
vbOKOnly + vbCritical
提示信息
End If
End Sub
以上只是簡要講述了在VB中使用Oracle的OLE對象聯接並訪問數據庫的方法
當然Oracle所提供的OLE對象並不僅僅局限於上面提到的
而功能也遠不止於此
有興趣的讀者可以查看Oracle的隨機幫助信息
用OLE對象構造出功能強大的應用程序
上述程序在Visual Basic
下開發
數據庫使用Personal Oracle
或Oracle
for NT並均調試通過
From:http://tw.wingwit.com/Article/program/Oracle/201311/16539.html