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/SQLPL/SQL是Oracle对SQL命令集的扩展开发人员能够利用它对非结构化的SQL命令块进行流控制和逻辑设计如果安装的是Oraclei数据库我相信你已经在使用Oracle Objects for OLE如果还没有使用Oracle Objects for OLE可以从Oracle的网站上下载它
另外我们还需要了解Oracle针对Visual Basic开发的二个对象和一个接口OraSessionOraDynaset对象和OraDatabase接口OraSession对象管理应用程序的OraDatabaseOraConnection和OraDynaset它是由ASP的CreateObject而不是Oracle Objects for OLE创建的一个对象OraDatabase接口向Oracle数据库表示表现用户对话并为SQLPL/SQL的执行提供方法它们每个都有一些属性和方法例如OraDynaset对象有BOFEOFBookmarkConnection等属性以及AddNewUpdateDeleteEditRefreshClone等个方法
下面我们就开始切入主题讨论如何使用ASP处理Oracle数据库中的数据
准备工作
我们需要什么样的环境和工具?
)我使用了OracleiIISWindows专业版作为应用程序的开发和运行环境
)在Oracle数据库中建立一个名字为MYTABLE或类似的表
ID (type: number) User Name(type: varchar) Phone(type: varchar) Email(type: varchar)
Colin Tong c
John White
Don Wod
数据的访问和存取
) Instantiate OOO Object OraSession and interface OraDatabase for connecting to ORACLE
)初始化Oracle Objects for OLEOraSession对象和OraDatabase接口为连接ORACLE数据库作准备
首先使用CreateObject创建OraSession对象然后通过打开一个与Oracle的连接创建OraDatabase对象如下所示
<%
Set OraSession = CreateObject(OracleInProcServerXOraSession)
Set OraDatabase = OraSessionOpenDatabase( _
username/password Cint())
%>
username和password是你所使用的关系数据库的用户名和口令
)创建OraDynaset对象执行SQL命令我们可以使用CreateDynaset或DbCreateDynaset创建记录集
<%
execute SQL
Set OraDynaset = OraDatabaseDbCreateDynaset( _
select * from mytable cint())
%>
)存取数据并删除创建的对象
<%
Do While(OraDynasetEOF = FALSE)
Responsewrite(OraDynasetFields(ID))
Responsewrite(OraDynasetFields(UserName))
others
OraDynasetMoveNext
Loop
remove OraSession
Set OraSession = Nothing
%>
编辑数据记录
我们将使用OraDynaset的方法实现对数据记录的编辑
)使用SQL语句创建OraDynaset对象
<%
创建ID= fID的记录的OraDynaset对象
Set OraDynaset = OraDatabaseCreateDynaset(_
select * from MYTABLE where ID= & fID cint())
%>
fID是想插入更更新的记录的ID值
)执行OraDynaset更新或添加数据记录
<%
使用Edit方法更新ID=fID记录的域
或使用AddNew插入一个新记录
OraDynasetEdit
OraDynasetFields(Phone)Value = fPhone
OraDynasetUpdate
删除创建的对话
Set OraSession = Nothing
%>
删除数据记录
如果已经真正地理解了我们在上面讨论的一些方法(EditUpdate和AddNew)也许有的读者已经知道该如何在Oracle数据库中删除记录了
<%
删除所有符合上面条件的记录
OraDynasetDelete
%>
在Oraclei中搜索和更新数据记录的代码
)搜索
<%
RetriveRecProcasp 使用ASP的Oracle Objects for OLE更新数据记录
%>
<%
定义作为OLE对象的变量
Dim OraSession
Dim OraDatabase
Dim OraDynaset
创建OraSession对象
Set OraSession = CreateObject(OracleInProcServerXOraSession)
通过打开Oracle数据库的一个连接创建OraDatabase对象
一定要使用自己的用户名和口令访问Oracle数据库
Set OraDatabase = OraSessionOpenDatabase( user/password _
Cint())
创建OraDynaset对象执行SQL语句
Set OraDynaset = OraDatabaseDbCreateDynaset(_
select * from mytable cint())
%>
<html><body>
<H>Retrieve All Records in MYTABLE Table ( in Oracle)
Using ooo</H>
<table border= ID=Table>
<%
Do While(OraDynasetEOF = FALSE)
ResponseWrite(<tr><td>)
Responsewrite(OraDynasetFields(ID))
ResponseWrite(</td><td>)
Responsewrite(OraDynasetFields(UserName))
ResponseWrite(</td><td>)
Responsewrite(OraDynasetFields(Phone))
ResponseWrite(</td><td>)
Responsewrite(OraDynasetFields(Email))
ResponseWrite(</td></tr>)
OraDynasetMoveNext
Loop
删除OraSession
Set OraSession = Nothing
%>
</table>
<a javascript:windowhistorygo()>
Back previous Page</a> |
<a > Back home Page</a>
</body></html>
)更新
<%
UpdateRecProcasp 使用ASP的Oracle Objects for OLE更新数据记录
%>
<%
定义作为OLE对象的变量
Dim OraSession
Dim OraDatabase
Dim OraDynaset
从提交的表格中获取字段值
fID = requestform(ID)
fUserName = requestform(UserName)
fPhone = requestform(Phone)
fEmail = requestform(Email)
创建OraSession对象
Set OraSession = CreateObject(OracleInProcServerXOraSession)
通过打开Oracle数据库的一个连接创建OraDatabase对象
Set OraDatabase = OraSessionOpenDatabase( user/password _
Cint())
创建ID= fID的记录的OraDynaset对象
Set OraDynaset = OraDatabaseCreateDynaset(_
select * from MYTABLE where ID= & fID cint())
使用Edit方法更新ID=fID记录的字段
Do While(OraDynasetEOF = FALSE)
OraDynasetEdit
OraDynasetFields(UserName)Value = fUserName
OraDynasetFields(Phone)Value = fPhone
OraDynasetFields(Email)Value = fEmail
OraDynasetUpdate
OraDynasetMoveNext
Loop
%>
<html><body>
<H>Update A Record in MYTABLE Table (Oracle) Using ooo</H>
The record (ID=<%=fID%>) has been updated successfully!<br>
You can view the result <a > here</a>
<p>
<a javascript:windowhistorygo()> Back previous Page</a>
&bnsp;&bnsp;
<a javascript:windowhistorygo()> Back home Page</a>
<%
删除OraSession对象
Set OraSession = Nothing
%>
</body></html>
至此我们已经讨论了如何在ASP代码中使用Oracle Objects for OLE来处理Oracle数据库中的数据
使用存储过程
我们已经讨论了如何在ASP中访问Oracle数据库所有的SQL语句都可以嵌入在ASP网页中如果