| 導購 | 订阅 | 在线投稿
分享
 
 
 

使用OLE對象訪問Oracle數據庫

2008-05-19 08:58:34  編輯來源:互聯網  简体版  手機版  移動版  評論  字體: ||

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並均調試通過。

  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並均調試通過。   
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有