当前位置: 首页 > 图文教程 > 数据库 > Oracle > asp连接oracle

Oracle
Oracle数据库系统紧急故障处理方法
Oracle SQL性能优化系列学习一
Oracle 数据库操作技巧集
Oracle组件实现动态Web数据库
ORACLE常见错误代码的分析与解决二
ORACLE常见错误代码的分析与解决三
在Oracle 8x实现自动断开后再连接
深刻理解Oracle数据库的启动和关闭
Oracle对两个数据表交集的查询
Oracle 8i字符集乱码问题析及其解决办法
Oracle 数据库管理脚本命名规范
Oracle不同数据库间对比分析脚本
Oracle数据库安全策略
Oracle数据库的空间管理技巧
Oracle数据库系统使用经验六则
ORACLE数据库应用开发常见问题及排除
Oracle系统表外键的更名
Oracle约束管理脚本
如何确定Oracle数据库表重复的记录
Oracle数据库索引的维护

Oracle 中的 asp连接oracle


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 570 ::
收藏到网摘: n/a

Oracle是世界上用得最多的数据库之一,活动服务器网页(ASP)是一种被广泛用于创建动态网页的功能强大的服务器端脚本语言。许多ASP开发人员一直在考虑,能否在开发互联网应用、电子商务网站、互联网管理系统时结合使用ASP和Oracle数据库?这个问题的答案是肯定的,我们还可以使用VB访问 Oracle数据库。在本篇文章中,我们将主要讨论如何使用ASP来处理Oracle数据库中数据的方法。

  在开始讨论这个问题前,我们需要了解几个背景知识,Oracle Objects for OLE就是其中之一。Oracle Objects for OLE是Oracle开发的一个中间件,它允许使用微软的OLE标准的客户端应用程序访问Oracle的数据库。也许会有读者说,我们也可以使用ODBC 访问Oracle的数据库。当然,可以使用ODBC访问Oracle数据库,但我认为,Oracle Objects for OLE比ODBC更安全,而且完全支持PL/SQL。PL/SQL是Oracle对SQL命令集的扩展,开发人员能够利用它对非结构化的SQL命令块进行流控制和逻辑设计。如果安装的是Oracle8i数据库,我相信你已经在使用Oracle Objects for OLE。如果还没有使用Oracle Objects for OLE,可以从Oracle的网站上下载它。

  另外,我们还需要了解Oracle针对Visual Basic开发的二个对象和一个接口:OraSession、OraDynaset对象和OraDatabase接口。OraSession对象管理应用程序的OraDatabase、OraConnection和OraDynaset,它是由ASP的CreateObject而不是Oracle Objects for OLE创建的一个对象。OraDatabase接口向Oracle数据库表示表现用户对话,并为SQL、PL/SQL的执行提供方法。它们每个都有一些属性和方法。例如,OraDynaset对象有BOF、EOF、Bookmark、Connection等属性以及AddNew、Update、 Delete、Edit、Refresh、Clone等10个方法。

  下面我们就开始切入主题,讨论如何使用ASP处理Oracle数据库中的数据。

   准备工作

  我们需要什么样的环境和工具?

  1)我使用了Oracle8i、IIS5.0、Windows2000专业版作为应用程序的开发和运行环境。

  2)在Oracle数据库中建立一个名字为MYTABLE1或类似的表。

ID (type: number) User Name(type: varchar2) Phone(type: varchar2) Email(type: varchar2)
100 Colin Tong 999-999-8888 [email protected]
111 John White 888-888-8888 [email protected]
101 Don Wod 416-333-3344 [email protected]

数据的访问和存取

   1) Instantiate OO4O Object, OraSession and interface OraDatabase for connecting to ORACLE.

   1)初始化Oracle Objects for OLE、OraSession对象和OraDatabase接口,为连接ORACLE数据库作准备。

  首先,使用CreateObject创建OraSession对象,然后通过打开一个与Oracle的连接创建OraDatabase对象,如下所示:

<%
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase("", _
"username/password", Cint(0))
%>

   “username”和“password”是你所使用的关系数据库的用户名和口令。

   2)创建OraDynaset对象执行SQL命令。我们可以使用CreateDynaset或DbCreateDynaset创建记录集。

<%
'execute SQL
Set OraDynaset = OraDatabase.DbCreateDynaset( _
"select * from mytable1", cint(0))
%>

  3)存取数据并删除创建的对象。

 

<%
Do While(OraDynaset.EOF = FALSE)
Response.write(OraDynaset.Fields("ID"))
Response.write(OraDynaset.Fields("UserName"))
... others ...
... ...
OraDynaset.MoveNext
Loop
'remove OraSession
Set OraSession = Nothing
%>

   编辑数据记录

   我们将使用OraDynaset的方法实现对数据记录的编辑。

   1)使用SQL语句创建OraDynaset对象。

<%
'创建ID= fID的记录的OraDynaset对象。
Set OraDynaset = OraDatabase.CreateDynaset(_
"select * from MYTABLE1 where ID= "& fID, cint(0))
%>

  fID是想插入更更新的记录的ID值。

   2)执行OraDynaset更新或添加数据记录。
 

<%
'使用Edit方法更新ID=fID记录的域。
'或使用AddNew插入一个新记录
OraDynaset.Edit
OraDynaset.Fields("Phone").Value = fPhone
OraDynaset.Update

' 删除创建的对话
Set OraSession = Nothing
%>

删除数据记录

   如果已经真正地理解了我们在上面讨论的一些方法(Edit、Update和AddNew),也许有的读者已经知道该如何在Oracle数据库中删除记录了。

 

<%
'删除所有符合上面条件的记录
OraDynaset.Delete
%>

  在Oracle8i中搜索和更新数据记录的代码

  1)搜索

<%
'RetriveRecProc.asp -使用ASP的Oracle Objects for OLE更新数据记录%>
<%
'定义作为OLE对象的变量
Dim OraSession
Dim OraDatabase
Dim OraDynaset'创建OraSession对象
Set OraSession = CreateObject("OracleInProcServer.XOraSession")'通过打开Oracle数据库的一个连接创建OraDatabase对象
'一定要使用自己的用户名和口令访问Oracle数据库
Set OraDatabase = OraSession.OpenDatabase("", "user/password", _
Cint(0))

'创建OraDynaset对象执行SQL语句
Set OraDynaset = OraDatabase.DbCreateDynaset(_
"select * from mytable1", cint(0))
%>
<html><body>
<H3>Retrieve All Records in MYTABLE1 Table ( in Oracle)
Using oo4o</H3>
<table border=1 ID="Table1">
<%
Do While(OraDynaset.EOF = FALSE)
Response.Write("<tr><td>")
Response.write(OraDynaset.Fields("ID"))
Response.Write("</td><td>")
Response.write(OraDynaset.Fields("UserName"))
Response.Write("</td><td>")
Response.write(OraDynaset.Fields("Phone"))
Response.Write("</td><td>")
Response.write(OraDynaset.Fields("Email"))
Response.Write("</td></tr>")
OraDynaset.MoveNext
Loop

'删除OraSession
Set OraSession = Nothing
%>
</table>
<a href="javascript:window.history.go(-1)">
Back previous Page</a> |
<a href="index.html"> Back home Page</a>
</body></html>

  2)更新

<%
'UpdateRecProc.asp -使用ASP的Oracle Objects for OLE更新数据记录
%>
<%
'定义作为OLE对象的变量。
Dim OraSession
Dim OraDatabase
Dim OraDynaset

'从提交的表格中获取字段值
fID = request.form("ID")
fUserName = request.form("UserName")
fPhone = request.form("Phone")
fEmail = request.form("Email")

'创建OraSession对象
Set OraSession = CreateObject("OracleInProcServer.XOraSession")

'通过打开Oracle数据库的一个连接创建OraDatabase对象
Set OraDatabase = OraSession.OpenDatabase("", "user/password", _
Cint(0))

'创建ID= fID的记录的OraDynaset对象
Set OraDynaset = OraDatabase.CreateDynaset(_
"select * from MYTABLE1 where ID= "& fID, cint(0))
'使用Edit方法更新ID=fID记录的字段
Do While(OraDynaset.EOF = FALSE)
OraDynaset.Edit
OraDynaset.Fields("UserName").Value = fUserName
OraDynaset.Fields("Phone").Value = fPhone
OraDynaset.Fields("Email").Value = fEmail
OraDynaset.Update
OraDynaset.MoveNext
Loop
%>
<html><body>
<H3>Update A Record in MYTABLE1 Table (Oracle) Using oo4o</H3>
The record (ID=<%=fID%>) has been updated successfully!<br>
You can view the result <a href="RetrieveAllRec.asp"> here</a>
<p>
<a href="javascript:window.history.go(-1)"> Back previous Page</a>
&bnsp;&bnsp;
<a href="javascript:window.history.go(-2)"> Back home Page</a>
<%
'删除OraSession对象
Set OraSession = Nothing
%>
</body荆?html>

  至此,我们已经讨论了如何在ASP代码中使用Oracle Objects for OLE来处理Oracle数据库中的数据。

   使用 存储过程

  我们已经讨论了如何在ASP中访问Oracle数据库,所有的SQL语句都可以嵌入在ASP网页中。如果在ASP中使用存储过程,将更能够更有效地处理数据。我建议读者除在ASP中嵌入SQL语句外,还应当使用PL/SQL存储过程。在Oracle数据库中创建存储过程已经超出了本文章的范围,在这里就不再进行介绍了。

   ASP和Oracle数据库是二种比较流行的技术,都有相当广泛的用户群,如果能够有机地将二者结合起来,将能够给工作带来许多方便,希望这篇文章能够起到抛砖引玉的作用,使读者能够更好地探索将这二种技术结合使用的途径。

二.

<%
dim objorasession,objoradb
dim strdbuser,strdbpwd,strdbconn
call connectdb()
sub connectdb()
连接数据库
on error resume next
strdbuser = "tmpuser" 连接用户名
strdbpwd = "rt45ps1w" 用户密码
strdbconn = "sun450" 连接字符串
set objorasession = server.createobject("oracleinprocserver.xorasession")
set objoradb = objorasession.opendatabase(strdbconn,strdbuser & "/" & strdbpwd,0)
if err.number>0 then
response.write "<font color=red>错误 :" & err.description & "</font>"
response.end
end if
end sub
sub enddb()
set objoradb = nothing
set objorasession = nothing
end sub
function gettablelist(str)
dim strsql,strtmp
dim objrs
strsql = "select at.table_name as tname,au.username as uname from all_tables at,all_users au where au.username=at.owner order by au.username"
set objrs = objoradb.dbcreatedynaset(strsql,0)
while not objrs.eof
stra = objrs("uname") & "." & objrs("tname")
if str=stra then
strtmp = strtmp & "<option selected>" & stra & "</option>"
else
strtmp = strtmp & "<option>" & stra & "</option>"
end if
objrs.movenext
wend
set objrs = nothing
gettablelist = strtmp
end function
%>
<form name=form1 action="index.asp" method=post target="main">
<table width="100%" border=0 align="center">
<tr><td>
all tables : <select name="tb">
<%=gettablelist(tblname)%>
</select>
<input type=hidden name="submitc" value="view">
<input type=submit name="submit" value="view data"> <font color=red>(<%=strdbuser & "/" & strdbpwd & "@" & strdbconn%>)</font>
</td></tr>
</table>
</form>