打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何在ASP中访问Oracle?
userphoto

2012.09.11

关注
我一直使用Oracle数据库,现在需要在Web上对Oracle8数据库进行访问,可我发现,在ASP中,ADO对Oracle的访问并不顺利,不但速度慢,而且还不能访问Oracle8的数字型字段(!)请问有什么办法可以实现对它们的顺利访问?
我们可以利用Oracle Object for OLE所包含的Oracle Objects Server来实现在ASP中对Oracle 8的访问。Oracle Objects Server共提供Oraclient、Orasession、Oraconnection、OraDatabase、OraDynaset、OraSQLstmt、OraField、Oraparameter、Oraparameter Array等九个对象供开发者使用。
Oracle Object for OLE是Oracle公司为客户端访问数据库开发的一个软件,运行在Windows95/98/NT平台。在用Oracle Objects Server访问Oracle8数据库之前,我们必须在Web服务器上安装Oracle Object for OLE,然后利用SQL+net Client2.X或Oraclenet8 Client8.X进行数据库的连接测试并设置数据库别名。
下面举一个在ASP中利用Oracle Object for OLE2.3查询Oracle 8.0.5数据库,并进行分页显示的程序范例。需要说明,由于Orasession对象的属性中没有控制分页的属性,本例同时使用了一个分页控制的程序,chunfeng.asp文件先取得数据库表的内容,然后计算分页的页数,如果页数超过一页,则交由chunfeng01.asp处理。具体代码如下:
chunfeng.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 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
' 设置页长
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 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对象
用来定义服务器端(Client或Workstation)的范围,Oraclient会记录此服务器端的所有Orasession对象。由系统根据需要自动建立。
2
Orasession对象
用来在程序中管理Oraconnection、OraDatabase、OraDynaset等对象,其建立方法为:
Set Orasession=Create(“OracleInProcServer.Xorasession”)
3
Oraconnection对象
表示对OraDatabase对象的连接,当需要建立OraDatabase对象时,系统会自动产生一个Oraconnection对象。反之,当与数据库断开连接时,Oraconnection对象自动释放。
4
OraDatabase对象
表示对数据库服务器的虚拟登录,其登录方法为:
Set Oradadabase=Orasession.Dbopendatabase_ (“数据库别名”, “用户名称/密码”,0)
5
OraDynaset对象
将数据库服务器符合SELECT命令的数据加以存储在客户端的缓冲区,让用户浏览或更新,最后将结果写回到服务器,其方法:
SetOraDynaset=OraDatabase.DbcreateDynaset(“SQL语句”,0)
6
OraSQLstmt对象
通常用来运行SQL命令,或调用存储过程,其用法为:
Set Orasqlstmt=Oradatabase.createSQl(“SQL语句”,0)
7
OraField对象
表示在OraDynaset对象中的某个字段或数据项目,它通过Value属性设置或取得OraDynaset对象中的某个字段值。
8
Oraparameter对象
表示一个在SQL命令或PL/SQL程序区块中所附加的变量。
9
Oraparameter Array对象
是Oraparameter对象的数组类型。它可以间接通过OraDatabase对象的Oraparameter数据集合来增加、存取或删除某个变量。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
在ASP中使用Oracle数据库
Recordset資料表分頁
阶段变量(会话变量)session
网页的结构化与模块化
客户端禁用COOKIE后,SESSION究竟还可不可用?SESSION到底是不是COOKI...
第二种分页技术
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服