Active
Server Pages是功能强大、易于学习的服务器端脚本编程环境,ASP内置ADO组件,因此可以轻松的存取各种数据库,从而大大缩短了程序开发时间。本文将笔者从事ASP数据库编程的两点经验贡献出来,供大家参考。
一、 与数据库建立连接
我们常用的数据库一般为Microsoft Access或SQL Server,为了使用这两种数据库,我们通常需要先创建和配置ODBC数据源,但事实上,ASP脚本可以使用OLD
DB的其他驱动程序直接把ADO绑定到数据库而不使用ODBC作为一个附加层,请看:
1. 与Microsoft Access数据库建立连接
Set Cnn = Server.CreateObject("ADODB.Connection")
Cnn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\asp\data")
& "\example.mdb;"
在这里,Server对象的MapPath方法将指定的虚拟路径转换为真实的文件路径,最终结果类似:c:\InetPub\home\asp\data\example.mdb。
2. 与SQL Server数据库建立连接
Set Cnn = Server.CreateObject("ADODB.Connection")
strConn = "Provider=sqloledb; User ID=sa; Password=; Initial Catalog=pubs;
Data
Source=16.62.5.8"
Cnn.Open strConn
Initial Catalog后指定数据库名,Data Source后为机器名或IP地址。
二、 从ASP脚本中访问数据库的两种方法
1. 通过SQL语句来访问数据库
1) 若需要返回 Recordset 对象引用(如查询操作)先要建立一个名为Cnn的连接
strQry = "SELECT * FROM authors"
Set rsTest = Cnn.Execute(strQry)
然后可以通过循环显示记录集rsTest中的有关数据。
2) 若不需要返回数据(如增加、修改、删除操作)
strQ = "INSERT INTO Shippers (CompanyName, Phone) VALUES ('O''Conner
Delivery', '(503)
555-0201')"
Cnn.Execute strQ
2. 通过Recordset对象的Open、AddNew、Delete、Update和UpdateBatch方法访问数据库
Set rsTest = Server.CreateObject("ADODB.Recordset") '创建Recordset对象
rsTest.CursorLocation = adUseServer '使用服务器端游标
rsTest.CursorType = adOpenForwardOnly '使用仅向前游标类型
rsTest.LockType = adLockOptimistic '开放式记录锁定(逐条)
rsTest.Open "SELECT * FROM Shippers WHERE CompanyName = 'United
Package'", Cnn, , ,
adCmdText
' 第五个参数:adCmdText指示数据源是一个SQL语句。
rsTest("Phone") = "(503) 555-8888"
rsTest.Update
Response.Write "更新单个记录 " & objRS("Phone") & ".
"
为了更好的理解ADO的数据库编程,下面提供一个完整的实例(NorthWind.mdb是Microsoft Access97自带的一个数据库,文件adovbs.inc可在C:\Program
Files\Common Files\System\ADO下找到):
<% @LANGUAGE = VBScript %>
<!--#include file="adovbs.inc"-->
<%
Response.Expires = 0
Dim StrCnn,Cnn,objRS, strOut, ID
Set Cnn = Server.CreateObject("ADODB.Connection")
StrCnn="Driver={Microsoft Access Driver (*.mdb)}; DBQ="
&
Server.MapPath("\asp24") & "\NorthWind.mdb;"
Cnn.Open StrCnn
Response.Write StrCnn & "<Br>" '看看输出的结果
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.CursorLocation = adUseServer
objRS.CursorType = adOpenKeyset
objRS.LockType = adLockOptimistic
objRS.Open "运货商", Cnn, , , adCmdTable
objRS.AddNew
objRS("公司名称") = "吴丰"
objRS("电话") = "571-7227298"
objRS.Update
ID = objRS("运货商ID")
Response.Write "新增记录运货商ID为 "
Response.Write ID & ".<BR><BR>"
objRS.Close
objRS.CursorLocation = adUseClient
objRS.CursorType = adOpenForwardOnly
objRS.LockType = adLockReadOnly
objRS.Open "运货商", Cnn, , , adCmdTable
%>
<HTML><BODY>
下面为显示信息部分-运货商ID: 公司名称 电话<BR><BR>
<%
While Not objRS.EOF
strOut = objRS("运货商ID") & ": " &
objRS("公司名称")
strOut = strOut & " " & objRS("电话")
Response.Write Server.HTMLEncode(strOut) & "<BR>"
objRS.MoveNext
Wend
objRS.close : Cnn.close
Set objRS = Nothing : Set Cnn = Nothing
%>
</BODY></HTML>