欢迎光临
我们一直在努力

ASP讲座之六:ASP与数据库(一)-ASP教程,数据库相关

建站超值云服务器,限时71元/月

在前面几讲中,我们已经学习了asp的基本内容,灵活使用这些知识,你已经可以使用asp建立一个web站点了。但一般来说,一个真正的、完整的站点是离不开数据库的,因为少量的数据,如网页访问人数等完全可以存储在文本文件中,但实际应用中,需要保存的数据远不止这一点点,而且这些数据之间往往还有关联,利用数据库来管理这些数据,可以很方便的查询和更新。数据库有很多种,如:fox数据库(.dbf)、access数据库(.mdb)、informix、oracle和sql server等等,在本讲座中,我将以microsoft access数据库和sql server 7.0为例来说明asp是如何访问数据库的。为什么选择asp呢?统计数据表明,sql server 7.0是当前最快、性价比最高的数据库,而www.8848.net、www.dell.com、www.hotbot.com等许多大型的网站都是使用asp技术创建的,所以asp是比较容易掌握而且很实用的技术,你应该满怀信心和勇气地试着接近它、了解它,进而使用它。
在进一步学习之前,要做哪些准备:
1. 如果你没有接触过数据库,建议先安装office中的microsoft access,了解一下数据库的基本知识。
2. 最好安装microsoft sql server 7.0。一旦安装好,立马就可使用,不需要什么设置,注意在windows9.x中应安装desktop版本,而7.0以前的版本只能安装在nt server中。
3. 接下来所讨论的内容,需要一个叫做mdac(microsoft data access components)的组件,这个组件已经包含在asp中,如果你想了解更多的相关内容,或者下载最新的版本,可以访问http://www.microsoft.com/data。

一、 与数据库建立连接
在正式开始之前,先介绍一下ado——activex data objects,刚接触这个概念,你只要把ado看作asp与数据库之间的桥梁就可以了。
(一) 与microsoft access数据库建立连接
方法一:例wuf40.asp
<% @language = vbscript %>
<% wuf40.asp
option explicit
dim cnn, strcnn
1 – 创建 connection 对象
set cnn = server.createobject(“adodb.connection”)
strcnn = “driver={microsoft access driver (*.mdb)}; dbq=” & server.mappath(“\asp”) & “\northwind.mdb;”
‘ 2 – 使用 connection 对象的 open 方法打开数据库
cnn.open strcnn

response.write server.mappath(“\asp”) & “\northwind.mdb;”  & “<br>”
response.write “数据库连接成功: ” & cnn.state & “<br>”
3 – 使用 connection 对象的 close 方法关闭连接
cnn.close
response.write “数据库已经关闭: ” & cnn.state
4 – 将connection 对象从内存中删除,以释放资源
set cnn = nothing
%>
    northwind.mdb是microsoft access97自带的一个示例数据库,一般位于目录“microsoft office\office\samples”下,你可以自己找一下,然后将这个文件拷至web服务器相应目录下(本例中放在c:\inetpub\home\asp下)。
    在这里,server对象的mappath方法将指定的虚拟路径转换为真实的文件路径,最终结果类似:c:\inetpub\home\asp\northwind.mdb。
方法二:用ole db创建microsoft access连接,下面列出关键部分。
set cnn = server.createobject(“adodb.connection”)
strcnn = “provider = microsoft.jet.oledb.4.0; data source = c:\inetpub\home\asp\northwind.mdb”
cnn.open strcnn

(二) 与sql server数据库建立连接
方法一:用ole db连接sql server,详见例程wuf41.asp。
set cnn = server.createobject(“adodb.connection”)
strcnn = “provider=sqloledb; user id=sa; password=; initial catalog=pubs; data source=icbczjp”
cnn.open strcnn
initial catalog后指定数据库名,data source后为机器名(即网络→属性→标识中的计算机名)或ip地址(需要安装dns服务)。
方法二:
set cnn = server.createobject(“adodb.connection”)
strcnn = “driver={sql server};server=icbczjp;uid=sa;pwd=;database=pubs”
cnn.open strcnn

除了上述的两种方法之外,当然还可使用许多文章、资料中介绍的最经典的方法:使用odbc生成连接。就是先在web服务器控制面板的“odbc data sources”中建立一个连接,然后在asp中使用类似“strcnn =”dsn=adocnn; uid = sa;pwd=;database=pubs””的连接字符串。这里不详细介绍,一来这不是最好的方法,二来其他资料都介绍了该方法。
另外,有兴趣可下载例程wuf42.asp看看如何使用connection对象的connectiontimeout和connectionstring属性。

二、 数据库从这里起步——检索数据库中已存在的数据
现在假定你已有最基本的数据库知识,知道如何使用microsoft access打开northwind.mdb中的“运货商”表,看到表中储存的几条数据。现在问题是如何使用asp在浏览器中显示这些数据,下面介绍三种方法。
特别提醒:如果你的数据库底子较薄,只要会使用第二种方法就行了,切不可贪多,以免走火入魔,切记!切记!

方法一:只使用 connection 对象。例wuf43.asp
<% @language = vbscript %>
<% wuf43.asp
option explicit
这一句是非常重要的, 它可以确保所看到的数据不是缓存在客户端的数据,
而是服务器端随时更新过的最新数据
response.expires = 0

第一部分: 建立连接

dim cnn, strcnn
set cnn = server.createobject(“adodb.connection”)
strcnn = “provider = microsoft.jet.oledb.4.0; data source = c:\inetpub\home\asp\northwind.mdb”
cnn.open strcnn

第二部分: 使用 connection 对象的 execute 方法得到记录集

dim strsql, rstest
下面是一句sql语句(结构化查询语句), 本讲座不具体介绍
‘建议找本书看看,基本使用还是比较简单的,一学就会
这一句的意思是从 运货商 表中选出所有的数据
strsql = “select * from 运货商”
set rstest = cnn.execute(strsql)
%>
<html>
<body>
<% 第三部分: 将得到的记录集显示到浏览器

循环至记录末尾 – 一行一行、一条记录一条记录的显示
do while not rstest.eof    

下面这两行的作用是一样的, 即 rstest(“运货商id”) 等同于 rstest(0)
response.write rstest(“运货商id”) & ”  ”  & rstest(“公司名称”) & ”  ”  & rstest(“电话”) & ”  ”  & “<br>”
response.write rstest(0) & ”  ”  & rstest(1) & ”  ”  & rstest(2) & ”  ”  & “<br>”

移到下一条记录 – 这一句可千万不能少 否则就陷入死循环
    rstest.movenext       
loop

第四部分: 打扫战场
cnn.close
set rstest = nothing: set cnn = nothing
%>
</body>
</html>
这个例子是很简单的,第三部分显示数据是数据库典型的输出样式,你可以参照以前所学的知识加上表格和颜色美化输出结果。
    非初级用户可以参考wuf44.asp看看execute方法的完整使用。

方法二:通过创建 recordset 对象——切记初学者只求掌握这种方法便够了。
例:wuf45.asp,其他部分同wuf43.asp,关键在于程序的第二部分。
第二部分: 通过创建 recordset 对象得到记录集
dim strsql, rstest
创建 recordset 对象
set rstest = server.createobject(“adodb.recordset”)

strsql = “select 运货商id,电话,公司名称 from 运货商 where 电话 = (503) 555-9931”
将 recordset 对象附加到连接 cnn
set rstest.activeconnection = cnn
使用 recordset 对象的 open 方法打开记录集
rstest.open strsql
    现在让我们看看recordset对象open方法的完整用法,例wuf48.asp。
<% @language = vbscript %>
<% wuf48.asp
option explicit
response.expires = 0
%>
<!–#include file=”adovbs.inc”–>
<%
第一部分: 建立连接
dim cnn, strcnn
set cnn = server.createobject(“adodb.connection”)
strcnn = “provider = microsoft.jet.oledb.4.0; data source = c:\inetpub\home\asp\northwind.mdb”
cnn.open strcnn

第二部分: 通过创建 recordset 对象得到记录集
dim rstest
set rstest = server.createobject(“adodb.recordset”)

rstest.open “运货商”,cnn,adopenforwardonly,adlockreadonly,adcmdtable
%>
<html>
<body>
<% 第三部分: 将得到的记录集显示到浏览器
do while not rstest.eof    
response.write rstest(0) & ”  ”  & rstest(1) & ”  ”  & rstest(2) & ”  ”  & “<br>”
    rstest.movenext       
loop

第四部分: 打扫战场
rstest.close: cnn.close
set rstest = nothing: set cnn = nothing
%>
</body>
</html>
分析:
1.首先看看关键句:
rstest.open “运货商”,cnn,adopenforwardonly,adlockreadonly,adcmdtable
第一个参数可以是表名(如:运货商),也可以是sql语句(如wuf45.asp)。
第二个参数指定当前的连接。
第三个参数指示cursortype,确定提供者打开 recordset 时应该使用的游标类型。这里采用仅向前移动的游标。
第四个参数指示locktype,确定提供者打开 recordset 时应该使用的锁定(并发)类型。这里指定为只读。
第五个参数与第一个参数相关,如本例中第一个参数为表名,则第五个参数使用adcmdtable,若第一个参数为sql语句,则第该参数为adcmdtext,如:
rstest.open “select * from 运货商”,cnn,adopenforwardonly,adlockreadonly,adcmdtext
    我想不见得大部人都能真正搞懂这五个参数的意思,没关系,刚开始只要照搬会用就行,以后我们会不断接触,熟了便能生巧。
    关于cursortype和locktype这两个参数,将在下讲详细阐述,仅仅检索数据只需按本例设置就可以了。
2.这五个参数,也可以利用recordset对象的属性来设置,如例wuf46.asp。
第二部分: 通过创建 recordset 对象得到记录集
dim rstest
set rstest = server.createobject(“adodb.recordset”)
rstest.activeconnection = cnn
rstest.cursortype = adopenforwardonly
rstest.locktype = adlockreadonly
rstest.open “运货商”, , , ,adcmdtable
3. 再看看这句:<!–#include file=”adovbs.inc”–>。
(1) 因为使用了adopenforwardonly,adlockreadonly,adcmdtext这样的常数,所以需要将adovbs.inc这个文件包含进来。
(2) adovbs.inc这个文件一般位于目录program files\common files\system\ado下,你可将它拷至web服务器当前目录(本讲下载包中也有该文件)。
(3) 用记事本打开这个文件看一下,就明白为什么需要这个文件了。

方法三:通过引入 command 对象——这个应该在你有能力的前提下研究。
<% @language = vbscript %>
<% wuf47.asp
option explicit
response.expires = 0
%>
<!–#include file=”adovbs.inc”–>
<%
第一部分: 建立连接
dim cnn, strcnn
set cnn = server.createobject(“adodb.connection”)
strcnn = “provider = microsoft.jet.oledb.4.0; data source = c:\inetpub\home\asp\northwind.mdb”
cnn.open strcnn

第二部分: 通过创建 command 对象得到记录集
dim strsql, rstest, cmdtest
创建 command 对象
set cmdtest = server.createobject(“adodb.command”)

strsql = “select max(数量) from 订单明细”
cmdtest.commandtext = strsql
cmdtest.commandtype = adcmdtext   表明命令类型为 sql 语句
set cmdtest.activeconnection = cnn
使用 command 对象的 execute 方法得到记录集。
set rstest = cmdtest.execute
%>
<html>
<body>
<% 第三部分: 将得到的记录集显示到浏览器

do while not rstest.eof    
response.write rstest(0)  & “<br>”
    rstest.movenext       
loop

第四部分: 打扫战场

rstest.close: cnn.close
set rstest = nothing: set cmdtest=nothing: set cnn = nothing
%>
</body>
</html>
    关于command 对象的使用以后还会在数据库的深入编程中重点讲解。

本讲主要介绍了如何与数据库连接并检索数据库数据,初学者难免会有点糊涂,切记,你只需要学会以下知识点即可:
1. 如何使用ole db与microsoft access数据库建立连接;
2. 如何使用ole db与microsoft sql server数据库建立连接;
3. 如何通过创建recordset对象检索数据库中的数据。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » ASP讲座之六:ASP与数据库(一)-ASP教程,数据库相关
分享到: 更多 (0)