?? oracle實例-4.htm
字號:
<body bgcolor="#000000">
<FONT color="#009900"
class=title>使用OLE對象訪問Oracle數(shù)據(jù)庫</FONT><font color="#009900"><BR>
</font><font color="#FFFFFF"> <FONT class=content> <BR>
OLE即對象聯(lián)接和嵌入技術,使用這一技術,我們在VB中不用任何控件就可輕松訪問 Oracle</A>數(shù)據(jù)庫的內(nèi)容。在安裝了Oracle</A>的Oracle</A>
Object for OLE后,就可以使用Oracle</A>提供的OLE對象方便地訪問數(shù)據(jù)庫的內(nèi)容了。 <BR>
<BR>
運行下面示例程序的前提是你必須安裝了Oracle</A>的客戶端或Personal Oracle</A>,并且在安裝時選擇了Oracle</A> Object
for OLE選項,否則你將會得到“無法建立對象”的錯誤信息。 <BR>
<BR>
首先,我們要建立與Oracle</A>數(shù)據(jù)庫的聯(lián)接,這里我們使用到兩個對象OraSession對象和OraDatabase對象。OraSession對象用于管理OraDatabase對象,使用OraSession對象的OpenDatabase方法可以建立OraDatabase對象,同時建立與Oracle</A>數(shù)據(jù)庫的聯(lián)接以訪問數(shù)據(jù)庫的內(nèi)容。下面的例子演示了如何使用OraSession對象和OraDatabase對象建立與Oracle</A>數(shù)據(jù)庫的聯(lián)接:
<BR>
<BR>
</FONT></font><FONT class=content>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code bgColor=#e6e6e6>Private Sub Command_Click()
<P> Dim OraSession As Object</P>
<P> Dim OraDatabase As Object</P>
<P> Dim Ls_username As String, Ls_password As String, Ls_server As String</P>
<P> Ls_server = ""</P>
<P> '聯(lián)接本地Oracle</A>數(shù)據(jù)庫</P>
<P> Ls_username = "system"</P>
<P> '用戶名為 system</P>
<P> Ls_password = "manager"</P>
<P> '密碼為 manager</P>
<P> '建立 OraSession 對象</P>
<P> Set OraSession = CreateObject("Oracle</A>InProcServer.XOraSession")</P>
<P> '錯誤處理</P>
<P> On Error GoTo Connect_Err:</P>
<P> '建立OraDatabase 對象以聯(lián)接到Oracle</A>數(shù)據(jù)庫</P>
<P> Set OraDatabase = OraSession.DbOpenDatabase(Ls_server, Ls_username
+ "/" + Ls_password, 0&&)</P>
<P> MsgBox "數(shù)據(jù)庫聯(lián)接成功!", vbOKOnly + vbInformation, "提示信息"</P>
<P> On Error GoTo 0</P>
<P> Exit Sub</P>
<P> Connect_err:</P>
<P> If InStr(OraSession.LastServerErrText, "ORA-01017") Then</P>
<P> MsgBox "無效的用戶名和密碼,數(shù)據(jù)庫聯(lián)接不成功!", vbOKOnly + vbCritical, "提示信息"</P>
<P> Else</P>
<P> MsgBox "數(shù)據(jù)庫聯(lián)接不成功!請查看下面的出錯信息:"+Chr(13)+OraSession.LastServerErrText,
vbOKOnly + vbCritical, "提示信息"</P>
<P> End If</P>
<P> End Sub</P></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
建立了數(shù)據(jù)庫聯(lián)接后我們就可以運行相應的SQL命令對數(shù)據(jù)庫的內(nèi)容進行相應的操作了。對于非查詢SQL命令(非SELECT命令),可以使用OraDatabase對象的ExecuteSQL方法執(zhí)行,而對數(shù)據(jù)庫的查詢則可使用OraDatabase對象的CreateDynaset方法建立OraDynaset對象來執(zhí)行查詢,然后建立OraFields對象對查詢結(jié)果進行檢索。下面我們分別舉例演示如何新建一個用戶然后查詢并列出DBA_USERS視圖中USERNAME字段的內(nèi)容,程序如下:
<BR>
<BR>
</font>
<TABLE cellSpacing=0 borderColorDark=#ffffff cellPadding=0 width=580
borderColorLight=black border=1>
<TBODY>
<TR>
<TD class=code bgColor=#e6e6e6> <P>Private Sub Command_Click()</P>
<P> Dim OraSession As Object</P>
<P> Dim OraDatabase As Object</P>
<P> Dim OraDynaset As Object</P>
<P> Dim OraFields As Object</P>
<P> Dim Ls_username As String, Ls_password As String, Ls_server As String</P>
<P> Dim Ls_mess As String</P>
<P> Dim Li_I As Integer</P>
<P> Ls_server = ""</P>
<P> '聯(lián)接本地Oracle</A>數(shù)據(jù)庫</P>
<P> Ls_username = "system"</P>
<P> '用戶名為 system</P>
<P> Ls_password = "manager"</P>
<P> '密碼為 manager</P>
<P> Set OraSession = CreateObject("Oracle</A>InProcServer.XOraSession")</P>
<P> On Error GoTo Connect_Err:</P>
<P> Set OraDatabase = OraSession.DbOpenDatabase(Ls_server, Ls_username
+ "/" + Ls_password, 0&&)</P>
<P> '執(zhí)行SQL命令出錯后跳轉(zhuǎn)到Sql_err</P>
<P> On Error GoTo Sql_err:</P>
<P> Set OraDynaset = OraDatabase.DbCreateDynaset("SELECT USERNAME FROM
DBA_USERS", 0&&)</P>
<P> If OraDynaset.RecordCount > 0 Then</P>
<P> '建立OraFields對象對查詢的內(nèi)容進行檢索</P>
<P> Set OraFields = OraDynaset.Fields</P>
<P> Ls_mess = “用戶列表:” + Chr(13)</P>
<P> Ls_mess = Ls_mess + OraFields(“USERNAME”).Value</P>
<P> for Li_I = 1 to OraDynaset.RecordCount - 1</P>
<P> OraDynaset. MoveNext</P>
<P> Ls_mess = Ls_mess + Chr(13) + OraFields(“USERNAME”).Value</P>
<P> Next Li_I</P>
<P> MsgBox Ls_mess , vbOKOnly + vbInformation, "查詢結(jié)果"</P>
<P> Else</P>
<P> MsgBox "未查詢到相應信息!", vbOKOnly + vbInformation, "提示信息"</P>
<P> End If</P>
<P> '創(chuàng)建新用戶TEST,密碼為TEST</P>
<P> OraDatabase.ExecuteSQL ("CREATE USER TEST IDENTIFIED BY TEST")</P>
<P> MsgBox "用戶創(chuàng)建成功!", vbOKOnly + vbInformation, "提示信息"</P>
<P> Set OraDynaset = OraDatabase.DbCreateDynaset("SELECT USERNAME FROM
DBA_USERS", 0&&)</P>
<P> If OraDynaset.RecordCount > 0 Then</P>
<P> '建立OraFields對象對查詢的內(nèi)容進行檢索</P>
<P> Set OraFields = OraDynaset.Fields</P>
<P> Ls_mess = “用戶列表:” + Chr(13)</P>
<P> Ls_mess = Ls_mess + OraFields(“USERNAME”).Value</P>
<P> for Li_I = 1 to OraDynaset.RecordCount - 1</P>
<P> OraDynaset. MoveNext</P>
<P> Ls_mess = Ls_mess + Chr(13) + OraFields(“USERNAME”).Value</P>
<P> Next Li_I</P>
<P> MsgBox Ls_mess , vbOKOnly + vbInformation, "用戶建立后查詢結(jié)果"</P>
<P> Else</P>
<P> MsgBox "未查詢到相應信息!", vbOKOnly + vbInformation, "提示信息"</P>
<P> End If</P>
<P> Exit Sub</P>
<P> Connect_err:</P>
<P> If InStr(OraSession.LastServerErrText, "ORA-01017") Then</P>
<P> MsgBox "無效的用戶名和密碼,數(shù)據(jù)庫聯(lián)接不成功!", vbOKOnly + vbCritical, "提示信息"</P>
<P> Else</P>
<P> MsgBox "數(shù)據(jù)庫聯(lián)接不成功!請查看下面的出錯信息:" + Chr(13) + OraSession.LastServerErrText,
vbOKOnly + vbCritical, "提示信息"</P>
<P> End If</P>
<P> Exit Sub</P>
<P> Sql_err:</P>
<P> If OraDatabase.LastServerErr <> 0 Then</P>
<P> MsgBox "數(shù)據(jù)庫操作出錯!請查看下面的出錯信息:" + Chr(13) + OraDatabase.LastServerErrText,
vbOKOnly + vbCritical, "提示信息"</P>
<P> End If</P>
<P> End Sub</P></TD>
</TR>
</TBODY>
</TABLE>
<font color="#FFFFFF"><BR>
以上只是簡要講述了在VB中使用Oracle</A>的OLE對象聯(lián)接并訪問數(shù)據(jù)庫的方法,當然Oracle</A>所提供的OLE對象并不僅僅局限于上面提到的,而功能也遠不止于此,有興趣的讀者可以查看Oracle</A>的隨機幫助信息,用OLE對象構(gòu)造出功能強大的應用程序。
<BR>
<BR>
上述程序在Visual Basic 5.0下開發(fā),數(shù)據(jù)庫使用Personal Oracle</A> 8.0.4或 Oracle</A> 8.1.6 for
NT并均調(diào)試通過。</font></FONT>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -