ASP数据库编程技巧(一)

来源:互联网 发布:js new york北京分店 编辑:程序博客网 时间:2024/05/18 18:16
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") & ".<BR>"

 

  为了更好的理解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>  

原创粉丝点击