首 页最新软件下载排行文章资讯投稿发布下载专题
维维下载站
您的位置:首页编程开发数据库类 → 如何实现在ASP中访问Oracle数据库

如何实现在ASP中访问Oracle数据库

来源:维维整理 发布时间:2009-9-24 17:18:00 人气:

一直使用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或Oracle Net8 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数据集合来增加、存取或删除某个变量。

相关下载
栏目导航
本类热门阅览