熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

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

2013-11-13 15:33:31  來源: Oracle 

  ASP(Active Server Pages)是微軟公司為開發互聯網絡應用程序所提出的工具之一它是一種類似HTML(Hypertext Markup Language超文本標記語言)Script與CGI(Common Gateway Interface通用網關接口)的結合體但是其運行效率卻比CGI更高程序編制也比HTML更方便且更有靈活性程序安全性及保密性遠比Script好因此ASP是目前網頁開發技術中最容易學習靈活性最大的開發工具 ASP內置的ADO組件是微軟公司開發的互聯網絡數據庫存取解決方案也是ASP存取數據庫的重要功臣ADO通過ODBC訪問數據庫從理論上講ADO能訪問各種ODBC所支持的數據庫如Microsoft SQL ServerAccessFoxproOracleDbase等然而在實踐中我們發現ADO可以完全支持Microsoft SQL Server和Acess然而對於Oracle就有些困難了筆者在實踐中利用ADO訪問Oracle結果發現ADO不能訪問Oracle的數字型字段並且發現ADO訪問Oracle的速度極慢 為了解決利用ASP訪問Oracle的速度及其他技術問題筆者嘗試了利用Oracle Object for OLE訪問Oracle結果完全取得了筆者預期的結果 Oracle Object for OLE是Oracle公司為了客戶端存取數據庫所發展的一個重要的產品它以Windows//NT為基礎共所有與OLE兼容的應用程序訪問Oracle數據庫它是沒有用戶界面的OLE Server其所包含的Oracle Objects Server是ASP訪問Oracle數據庫的重要功臣之一 要通過Oracle Objects Server來訪問Oracle數據庫除了基本的Web服務器與ASP等軟件外還必須確定Web服務器已經安裝了Oracle Object for OLE軟件其所需的軟件包括Network Protocol AdapterOracle Object for OLEXSQL*Net ClientX或Oracle Net ClientXSQL*Plus及Oracle ODBC Driver在確定Web服務器已安裝上述軟件後還必須利用SQL*Net ClientX或Oracle Net ClientX進行數據庫的連接測試並設置數據庫別名(Database Alias) Oracle Objects Server共提供OraclientOrasessionOraconnectionOraDatabaseOraDynasetOraSQLstmtOraFieldOraparameterOraparameter Array等九個對象供開發者使用其功能與作用分述如下 .Oraclient對象 Oraclient對象是用來定義服務器端(Client或Workstation)的范圍Oraclient會記錄此服務器端的所有Orasession對象Oraclient由系統根據需要自動建立 .Orasession對象 Orasession對象用來在程序中管理OraconnectionOraDatabaseOraDynaset等對象其建立方法如下 Set Orasession=Create(OracleInProcServerXorasession) .Oraconnection對象 Oraconnection對象表示對OraDatabase對象的連接當需要建立OraDatabase對象時系統會自動產生一個Oraconnection對象反之當與數據庫斷開連接時Oraconnection對象自動釋放 .OraDatabase對象 OraDatabase對象表示對數據庫服務器的虛擬登錄其登錄方法如下 Set Oradadabase=OrasessionDbopendatabase_ (數據庫別名 用戶名稱/密碼) .OraDynaset對象 OraDynaset對象會將數據庫服務器符合SELECT命令的數據加以存儲在客戶端的緩沖區讓用戶浏覽或更新最後將結果寫回到服務器其方法如下 SetOraDynaset=OraDatabaseDbcreateDynaset(SQL語句) .OraSQLstmt對象 OraSQLstmt對象通常用來運行SQL命令或是調用存儲過程其用法如下 Set Orasqlstmt=OradatabasecreateSQl(SQL語句) .OraField對象 OraField對象表示在OraDynaset對象中的某個字段或數據項目他通過Value屬性設置或取得OraDynaset對象中的某個字段值 .Oraparameter對象 Oraparameter對象表示一個在SQL命令或PL/SQL程序區塊中所附加的變量 .Oraparameter Array對象 Oraparameter Array對象是Oraparameter對象的數組類型Oraparameter Array對象可以間接通過OraDatabase對象的Oraparameter數據集合來增加存取或刪除某個變量  下面舉一具體例子說明如何在ASP中利用Oracle Object for OLE訪問Oracle 筆者編寫了一個在ASP中利用Oracle Object for OLE查詢Oracle 數據庫並進行分頁顯示的程序由於Orasession對象的屬性中沒有控制分頁的屬性應此筆者自編了分頁控制的程序 以下共兩個ASP文件(queryasp和queryasp)queryasp文件先取得數據庫表的內容然後計算分頁的頁數如果頁數超過一頁則交由queryasp處理其程序代碼如下 queryasp <% ‘連接數據庫 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"查詢結果" ‘計算頁數 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"" for i=0 to session(oradynaset)unt - 1 response.write"" response.write session(oradynaset).fields(i).name response.write"" next response.write "" startrow=(page-1)*pagesize+1 endrow=page*pagesize oradynaset.moveto startrow for j=startrow to endrow response.write"" for i=0 to session(oradynaset)unt - 1 response.write"" response.write session(oradynaset).fields(i).value response.write"" next response.write"" session(oradynaset).dbmovenext if session(oradynaset).eof then exit for next response.write"" end if if page> then responsewrite 第一頁 responsewrite 上一頁 end if if cint(page) responsewrite 下一頁 responsewrite 最後頁 end if set orasession=nothing %>  queryasp <% 設置頁長 pagesize= if session(oradynaset)recordcount= then responsewrite 無符合條件的數據 else responsewrite查詢結果 計算頁數 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)+ end if if request(page)= then page= else page=cstr(request(page)) end if responsewrite&pages&目前第&page&  responsewrite for i= to session(oradynaset)unt responsewrite responsewrite session(oradynaset)fields(i)name responsewrite next responsewrite startrow=(page)*pagesize+ endrow=page*pagesize oradynasetmoveto startrow for j=startrow to endrow responsewrite for i= to session(oradynaset)unt responsewrite responsewrite session(oradynaset)fields(i)value responsewrite next responsewrite session(oradynaset)dbmovenext if session(oradynaset)eof then exit for next responsewrite end if if page> then responsewrite 第一頁 responsewrite 上一頁 end if if cint(page) responsewrite 下一頁 responsewrite 最後頁 end if set orasession=nothing %>

From:http://tw.wingwit.com/Article/program/Oracle/201311/16915.html

    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.