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

使用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- 王朝網路 版權所有