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 Server
Access
Foxpro
Oracle
Dbase等
然而在實踐中我們發現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 Adapter
Oracle Object for OLE
X
SQL*Net Client
X或Oracle Net
Client
X
SQL*Plus及Oracle
ODBC Driver
在確定Web服務器已安裝上述軟件後
還必須利用SQL*Net Client
X或Oracle Net
Client
X進行數據庫的連接測試並設置數據庫別名(Database Alias)
Oracle Objects Server共提供Oraclient
Orasession
Oraconnection
OraDatabase
OraDynaset
OraSQLstmt
OraField
Oraparameter
Oraparameter Array等九個對象供開發者使用
其功能與作用分述如下
.Oraclient對象 Oraclient對象是用來定義服務器端(Client或Workstation)的范圍
Oraclient會記錄此服務器端的所有Orasession對象
Oraclient由系統根據需要自動建立
.Orasession對象 Orasession對象用來在程序中管理Oraconnection
OraDatabase
OraDynaset等對象
其建立方法如下
Set Orasession=Create(
OracleInProcServer
Xorasession
)
.Oraconnection對象 Oraconnection對象表示對OraDatabase對象的連接
當需要建立OraDatabase對象時
系統會自動產生一個Oraconnection對象
反之
當與數據庫斷開連接時
Oraconnection對象自動釋放
.OraDatabase對象 OraDatabase對象表示對數據庫服務器的虛擬登錄
其登錄方法如下
Set Oradadabase=Orasession
Dbopendatabase_ (
數據庫別名
用戶名稱/密碼
)
.OraDynaset對象 OraDynaset對象會將數據庫服務器符合SELECT命令的數據加以存儲在客戶端的緩沖區
讓用戶浏覽或更新
最後將結果寫回到服務器
其方法如下
SetOraDynaset=OraDatabase
DbcreateDynaset(
SQL語句
)
.OraSQLstmt對象 OraSQLstmt對象通常用來運行SQL命令
或是調用存儲過程
其用法如下
Set Orasqlstmt=Oradatabase
createSQl(
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文件(query
asp和query
asp)
query
asp文件先取得數據庫表的內容
然後計算分頁的頁數
如果頁數超過一頁
則交由query
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"查詢結果" ‘計算頁數 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 response
write
第一頁
response
write
上一頁
end if if cint(page) response
write
下一頁
response
write
最後頁
end if set orasession=nothing %>
query
asp <%
設置頁長 pagesize=
if session(oradynaset)
recordcount=
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)+
end if if request(
page
)=
then page=
else page=cstr(request(
page
)) end if response
write
共
&pages&
頁
目前第
&page&
頁
response
write
for i=
to session(oradynaset)unt
response
write
response
write session(oradynaset)
fields(i)
name response
write
next response
write
startrow=(page
)*pagesize+
endrow=page*pagesize oradynaset
moveto startrow for j=startrow to endrow response
write
for i=
to session(oradynaset)unt
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 response
write
第一頁
response
write
上一頁
end if if cint(page) response
write
下一頁
response
write
最後頁
end if set orasession=nothing %>
From:http://tw.wingwit.com/Article/program/Oracle/201311/16915.html