在開始討論這個問題前,我們需要了解幾個背景知識,Oracle Objects for OLE就是其中之一。Oracle Objects for OLE是Oracle開發的一個中間件,它允許使用微軟的OLE標準的客戶端應用程序訪問Oracle的數據庫。也許會有讀者說,我們也可以使用ODBC訪問Oracle的數據庫。當然,可以使用ODBC訪問Oracle數據庫,但我認為,Oracle Objects for OLE比ODBC更安全,而且完全支持PL/SQL。PL/SQL是Oracle對SQL命令集的擴展,開發人員能夠利用它對非結構化的SQL命令塊進行流控制和邏輯設計。如果安裝的是Oracle8i數據庫,我相信你已經在使用Oracle Objects for OLE。如果還沒有使用Oracle Objects for OLE,可以從Oracle的網站上下載它。
另外,我們還需要了解Oracle針對Visual Basic開發的二個對象和一個接口:Orasession、OraDynaset對象和OraDatabase接口。OraSession對象管理應用程序的OraDatabase、OraConnection和OraDynaset,它是由ASP的CreateObject而不是Oracle Objects for OLE創建的一個對象。OraDatabase接口向Oracle數據庫表示表現用戶對話,并為SQL、PL/SQL的執行提供方法。它們每個都有一些屬性和方法。例如,OraDynaset對象有BOF、EOF、Bookmark、Connection等屬性以及AddNew、Update、Delete、Edit、Refresh、Clone等10個方法。
ID (type: number) User Name(type: varchar2) Phone(type: varchar2) Email(type: varchar2) 100 Colin Tong 999-999-8888 colinjava@hotmail.com 111 John White 888-888-8888 [email protected] 101 Don Wod 416-333-3344 [email protected]
數據的訪問和存取
1) Instantiate OO4O Object, OraSession and interface OraDatabase for connecting to ORACLE.
1)初始化Oracle Objects for OLE、OraSession對象和OraDatabase接口,為連接ORACLE數據庫作準備。
<% 'RetriveRecProc.asp -使用ASP的Oracle Objects for OLE更新數據記錄
%> <% '定義作為OLE對象的變量 Dim OraSession Dim OraDatabase Dim OraDynaset
'創建OraSession對象 Set OraSession = CreateObject("OracleInProcServer.XOraSession")
'通過打開Oracle數據庫的一個連接創建OraDatabase對象 '一定要使用自己的用戶名和口令訪問Oracle數據庫 Set OraDatabase = OraSession.OpenDatabase("", "user/password", _ Cint(0))
'創建OraDynaset對象執行SQL語句 Set OraDynaset = OraDatabase.DbCreateDynaset(_ "select * from mytable1", cint(0)) %> <html><body> <H3>Retrieve All Records in MYTABLE1 Table ( in Oracle) Using oo4o</H3> <table border=1 ID="Table1"> <% Do While(OraDynaset.EOF = FALSE) Response.Write("<tr><td>") Response.write(OraDynaset.Fields("ID")) Response.Write("</td><td>") Response.write(OraDynaset.Fields("UserName")) Response.Write("</td><td>") Response.write(OraDynaset.Fields("Phone")) Response.Write("</td><td>") Response.write(OraDynaset.Fields("Email")) Response.Write("</td></tr>") OraDynaset.MoveNext Loop
'刪除OraSession Set OraSession = Nothing %> </table> <a href="javascript:window.history.go(-1)"> Back previous Page</a> | <a href="index.html"> Back home Page</a> </body></html>
2)更新
<% 'UpdateRecProc.asp -使用ASP的Oracle Objects for OLE更新數據記錄 %> <% '定義作為OLE對象的變量。 Dim OraSession Dim OraDatabase Dim OraDynaset
'創建OraSession對象 Set OraSession = CreateObject("OracleInProcServer.XOraSession")
'通過打開Oracle數據庫的一個連接創建OraDatabase對象 Set OraDatabase = OraSession.OpenDatabase("", "user/password", _ Cint(0))
'創建ID= fID的記錄的OraDynaset對象 Set OraDynaset = OraDatabase.CreateDynaset(_ "select * from MYTABLE1 where ID= "& fID, cint(0))
'使用Edit方法更新ID=fID記錄的字段 Do While(OraDynaset.EOF = FALSE) OraDynaset.Edit OraDynaset.Fields("UserName").Value = fUserName OraDynaset.Fields("Phone").Value = fPhone OraDynaset.Fields("Email").Value = fEmail OraDynaset.Update OraDynaset.MoveNext Loop %> <html><body> <H3>Update A Record in MYTABLE1 Table (Oracle) Using oo4o</H3> The record (ID=<%=fID%>) has been updated successfully!<br> You can view the result <a href="RetrieveAllRec.asp"> here</a> <p> <a href="Javascript:window.history.go(-1)"> Back previous Page</a> &bnsp;&bnsp; <a href="javascript:window.history.go(-2)"> Back home Page</a> <% '刪除OraSession對象 Set OraSession = Nothing %> </body></html>
至此,我們已經討論了如何在ASP代碼中使用Oracle Objects for OLE來處理Oracle數據庫中的數據。