日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

如何在ASP中訪問Oracle?

 aaie_ 2012-09-11

我一直使用Oracle數(shù)據(jù)庫,現(xiàn)在需要Web上對Oracle8數(shù)據(jù)庫進行訪問,可我發(fā)現(xiàn),在ASP中,ADOOracle的訪問并不順利,不但速度慢,而且還不能訪問Oracle8的數(shù)字型字段(?。┱垎栍惺裁崔k法可以實現(xiàn)對它們的順利訪問?

 

我們可以利用Oracle Object for OLE所包含的Oracle Objects Server來實現(xiàn)在ASP中對Oracle 8的訪問。Oracle Objects Server共提供Oraclient、Orasession、Oraconnection、OraDatabaseOraDynaset、OraSQLstmt、OraField、OraparameterOraparameter Array等九個對象供開發(fā)者使用。

Oracle Object for OLEOracle公司為客戶端訪問數(shù)據(jù)庫開發(fā)的一個軟件,運行在Windows95/98/NT平臺。在用Oracle Objects Server訪問Oracle8數(shù)據(jù)庫之前,我們必須在Web服務(wù)器上安裝Oracle Object for OLE,然后利用SQL+net Client2.XOracle net8 Client8.X進行數(shù)據(jù)庫的連接測試并設(shè)置數(shù)據(jù)庫別名。

下面舉一個在ASP中利用Oracle Object for OLE2.3查詢Oracle 8.0.5數(shù)據(jù)庫,并進行分頁顯示的程序范例。需要說明,由于Orasession對象的屬性中沒有控制分頁的屬性,本例同時使用了一個分頁控制的程序,chunfeng.asp文件先取得數(shù)據(jù)庫表的內(nèi)容,然后計算分頁的頁數(shù),如果頁數(shù)超過一頁,則交由chunfeng01.asp處理。具體代碼如下:

chunfeng.asp
<%
set orasession=createobject("oracleinprocserver.xorasession")
set oradatabase=orasession.dbopendatabase("orant","scotter/tiger",0)

' 連接數(shù)據(jù)庫
sql="select * from cq_hjwj "
set session(oradynaset)=oradatabase.dbcreatedynaset(sql,0)

'設(shè) 置查詢條件
pagesize=15

' 設(shè)置頁長
if session(oradynaset).recordcount=0 then
response.write "
對不起,沒有找到符合條件的數(shù)據(jù)!"
else
response.write"<h3>
查詢結(jié)果</h3>"
pages=int(session(oradynaset).recordcount/pagesize)
if pages*pagesize=session(oradynaset).recordcount then
pages=int(session(oradynaset).recordcount/pagesize)

' 計算頁數(shù)
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 page>1 then
response.write "<a href='chunfeng01.asp?page=1'>
第一頁</a>  "
response.write "<a href='chunfeng01.asp?page=" & page-1 & "'>
上一頁</a>  "
end if
if cint(page)<pages then
response.write "<a href='chunfeng01.asp?page=" & page+1 & "'>
下一頁</a>  "
response.write "<a href='chunfeng01.asp?page=" & pages & "'>
最后頁</a>  "
end if
set orasession=nothing
%>
<html>
</html>
  
chunfeng01.asp
<%
pagesize=15

' 設(shè)置頁長
if session(oradynaset).recordcount=0 then
response.write "
對不起,沒有找到符合條件的數(shù)據(jù)!"
else
response.write"<h3>
查詢結(jié)果</h3>"
pages=int(session(oradynaset).recordcount/pagesize)
if pages*pagesize=session(oradynaset).recordcount then
pages=int(session(oradynaset).recordcount/pagesize)

' 計算頁數(shù)
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 page>1 then
response.write "<a href='chunfeng01.asp?page=1'>
第一頁</a>  "
response.write "<a href='chunfeng01.asp?page=" & page-1 & "'>
上一頁</a>  "
end if
if cint(page)<pages then
response.write "<a href='chunfeng01.asp?page=" & page+1 & "'>
下一頁</a>  "
response.write "<a href='chunfeng01.asp?page=" & pages & "'>
最后頁</a>  "
end if
set orasession=nothing
%>
<html>
</html>

Oracle Objects Server提供的九個對象的功能與作用分述如下:

序號

對象名稱

   

1

Oraclient對象

用來定義服務(wù)器端(ClientWorkstation)的范圍,Oraclient會記錄此服務(wù)器端的所有Orasession對象。由系統(tǒng)根據(jù)需要自動建立。

2

Orasession對象

用來在程序中管理Oraconnection、OraDatabaseOraDynaset等對象,其建立方法為:

Set Orasession=Create(OracleInProcServer.Xorasession)

3

Oraconnection對象

表示對OraDatabase對象的連接,當(dāng)需要建立OraDatabase對象時,系統(tǒng)會自動產(chǎn)生一個Oraconnection對象。反之,當(dāng)與數(shù)據(jù)庫斷開連接時,Oraconnection對象自動釋放。

4

OraDatabase對象

表示對數(shù)據(jù)庫服務(wù)器的虛擬登錄,其登錄方法為:

Set Oradadabase=Orasession.Dbopendatabase_ (“數(shù)據(jù)庫別名”, “用戶名稱/密碼”,0)

5

OraDynaset對象

將數(shù)據(jù)庫服務(wù)器符合SELECT命令的數(shù)據(jù)加以存儲在客戶端的緩沖區(qū),讓用戶瀏覽或更新,最后將結(jié)果寫回到服務(wù)器,其方法:

SetOraDynaset=OraDatabase.DbcreateDynaset(SQL語句”,0)

6

OraSQLstmt對象

通常用來運行SQL命令,或調(diào)用存儲過程,其用法為:

Set Orasqlstmt=Oradatabase.createSQl(SQL語句”,0)

7

OraField對象

表示在OraDynaset對象中的某個字段或數(shù)據(jù)項目,它通過Value屬性設(shè)置或取得OraDynaset對象中的某個字段值。

8

Oraparameter對象

表示一個在SQL命令或PL/SQL程序區(qū)塊中所附加的變量。

9

Oraparameter Array對象

Oraparameter對象的數(shù)組類型。它可以間接通過OraDatabase對象的Oraparameter數(shù)據(jù)集合來增加、存取或刪除某個變量。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多