在ASP中利用Oracle Object for OLE訪問Oracle 8

來源:互聯網
上載者:User
object|oracle|訪問 ASP(Active Server Pages)是微軟公司為開發互連網絡應用程式所提出的工具之一,它是一種類似HTML(Hypertext
Markup Language超文字標記語言 (HTML))、Script與CGI(Common Gateway Interface通用閘道介面)的結合體,但是其運行效率卻
比CGI更高、程式編製也比HTML更方便且更有靈活性,程式安全性及保密性遠比Script好。因此ASP是目前網頁開發技術中
最容易學習、靈活性最大的開發工具。
ASP內建的ADO組件是微軟公司開發的互連網絡資料庫存取解決方案,也是ASP存取資料庫的重要功臣,ADO通過ODBC訪問數
據庫,從理論上講ADO能訪問各種ODBC所支援的資料庫,如Microsoft SQL Server,Access,Foxpro,Oracle,Dbase等,
然而在實踐中我們發現ADO可以完全支援Microsoft SQL Server和Acess,然而對於Oracle就有些困難了,筆者在實踐中利
用ADO訪問Oracle8,結果發現ADO不能訪問Oracle8的數字型欄位,並且發現ADO訪問Oracle8的速度極慢。
為瞭解決利用ASP訪問Oracle8的速度及其他技術問題,筆者嘗試了利用Oracle Object for OLE訪問Oracle8,結果完全取
得了筆者預期的結果。
Oracle Object for OLE是Oracle公司為了用戶端存取資料庫所發展的一個重要的產品,它以Windows95/98/NT為基礎,共
所有與OLE相容的應用程式訪問Oracle資料庫。它是沒有使用者介面的OLE Server,其所包含的Oracle Objects Server是ASP
訪問Oracle資料庫的重要功臣之一。
要通過Oracle Objects Server來訪問Oracle8資料庫,除了基本的Web伺服器與ASP等軟體外,還必須確定Web伺服器已經安
裝了Oracle Object for OLE軟體,其所需的軟體包括:Network Protocol Adapter、Oracle Object for OLE2.X、
SQL*Net Client2.X或Oracle Net8 Client8.X、SQL*Plus及Oracle8 ODBC Driver。在確定Web伺服器已安裝上述軟體後,
還必須利用SQL*Net Client2.X或Oracle Net8 Client8.X進行資料庫的串連測試並設定資料庫別名(Database Alias)。
Oracle Objects Server共提供Oraclient、Orasession、Oraconnection、OraDatabase、OraDynaset、OraSQLstmt、
OraField、Oraparameter、Oraparameter Array等九個對象供開發人員使用。其功能與作用分述如下:
1.Oraclient對象
Oraclient對象是用來定義伺服器端(Client或Workstation)的範圍,Oraclient會記錄此伺服器端的所有Orasession對象。
Oraclient由系統根據需要自動建立。
2.Orasession對象
Orasession對象用來在程式中管理Oraconnection、OraDatabase、OraDynaset等對象,其建立方法如下:
Set Orasession=Create(“OracleInProcServer.Xorasession”)
3.Oraconnection對象
Oraconnection對象表示對OraDatabase對象的串連,當需要建立OraDatabase對象時,系統會自動產生一個Oraconnection
對象。反之,當與資料庫中斷連線時,Oraconnection對象自動釋放。
4.OraDatabase對象
OraDatabase對象表示對資料庫伺服器的虛擬登入,其登入方法如下:
Set Oradadabase=Orasession.Dbopendatabase_
(“資料庫別名”, “使用者名稱稱/密碼”,0)
5.OraDynaset對象
OraDynaset對象會將資料庫伺服器符合SELECT命令的資料加以儲存在用戶端的緩衝區,讓使用者瀏覽或更新,最後將結果寫
回到伺服器,其方法如下:
SetOraDynaset=OraDatabase.DbcreateDynaset(“SQL語句”,0)
6.OraSQLstmt對象
OraSQLstmt對象通常用來運行SQL命令、或是調用預存程序,其用法如下:
Set Orasqlstmt=Oradatabase.createSQl(“SQL語句”,0)
7.OraField對象
OraField對象表示在OraDynaset對象中的某個欄位或資料項目,他通過Value屬性設定或取得OraDynaset對象中的某個欄位
值。
8.Oraparameter對象
Oraparameter對象表示一個在SQL命令或PL/SQL程式區塊中所附加的變數。
9.Oraparameter Array對象
Oraparameter Array對象是Oraparameter對象的數群組類型,Oraparameter Array對象可以間接通過OraDatabase對象的
Oraparameter資料集合來增加、存取或刪除某個變數。

下面舉一具體例子說明如何在ASP中利用Oracle Object for OLE訪問Oracle 8。
筆者編寫了一個在ASP中利用Oracle Object for OLE2.3查詢Oracle 8.0.5資料庫,並進行分頁顯示的程式。由於
Orasession對象的屬性中沒有控制分頁的屬性,應此筆者自編了分頁控制的程式。
以下共兩個ASP檔案(query.asp和query1.asp),query.asp檔案先取得資料庫表的內容,然後計算分頁的頁數,如果頁數超
過一頁,則交由query1.asp處理,其程式碼如下
‘query.asp
<%
‘串連資料庫
set orasession=createobject("oracleinprocserver.xorasession")
set oradatabase=orasession.dbopendatabase("orant","scotter/tiger",0)
‘設定查詢條件
sql="select * from cq_hjwj "
set session(oradynaset)=oradatabase.dbcreatedynaset(sql,0)
‘設定頁長
pagesize=15
if session(oradynaset).recordcount=0 then
response.write "無合格資料"
else
response.write"<h3>查詢結果</h3>"
‘計算頁數
pages=int(session(oradynaset).recordcount/pagesize)
if pages*pagesize=session(oradynaset).recordcount then
pages=int(session(oradynaset).recordcount/pagesize)
else
pages=int(session(oradynaset).recordcount/pagesize)+1
end if
if request("page")="" then
page=1
else
page=cstr(request("page"))
end if
response.write"共"&pages&"頁,目前第"&page&"頁"
response.write"<table border=5><tr>"
for i=0 to session(oradynaset).fields.count - 1
response.write"<td>"
response.write session(oradynaset).fields(i).name
response.write"</td>"
next
response.write "</tr>"
startrow=(page-1)*pagesize+1
endrow=page*pagesize
oradynaset.moveto startrow
for j=startrow to endrow
response.write"<tr>"
for i=0 to session(oradynaset).fields.count - 1
response.write"<td>"
response.write session(oradynaset).fields(i).value
response.write"</td>"
next
response.write"</tr>"
session(oradynaset).dbmovenext
if session(oradynaset).eof then exit for
next
response.write"</table>"
end if
if pag



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。