您的位置:首页精文荟萃软件资讯 → ASP知识讲座六

ASP知识讲座六

时间:2004/10/7 18:20:00来源:本站整理作者:蓝点我要评论(0)

 ASP与数据库(一)

在前面几讲中,我们已经学习了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;" & "
"
Response.Write "数据库连接成功: " & Cnn.State & "
"
' 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)
%>


<% '第三部分: 将得到的记录集显示到浏览器上

'循环至记录末尾 - 一行一行、一条记录一条记录的显示
Do While Not rsTest.EOF 

'下面这两行的作用是一样的, 即 rsTest("运货商ID") 等同于 rsTest(0)
Response.Write rsTest("运货商ID") & " " & rsTest("公司名称") & " " & rsTest("电话") & " " & "
"
'Response.Write rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "
"

'移到下一条记录 - 这一句可千万不能少 否则就陷入死循环
rsTest.MoveNext 
Loop

'第四部分: 打扫战场
Cnn.close
Set rsTest = Nothing: Set Cnn = Nothing
%>


这个例子是很简单的,第三部分显示数据是数据库典型的输出样式,你可以参照以前所学的知识加上表格和颜色美化输出结果。
非初级用户可以参考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
%>

<%
'第一部分: 建立连接
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
%>


<% '第三部分: 将得到的记录集显示到浏览器上
Do While Not rsTest.EOF 
Response.Write rsTest(0) & " " & rsTest(1) & " " & rsTest(2) & " " & "
"
rsTest.MoveNext 
Loop

'第四部分: 打扫战场
rsTest.Close: Cnn.Close
Set rsTest = Nothing: Set Cnn = Nothing
%>


分析:
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. 再看看这句:
(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
%>

<%
'第一部分: 建立连接
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
%>


<% '第三部分: 将得到的记录集显示到浏览器上

Do While Not rsTest.EOF 
Response.Write rsTest(0) & "
"
rsTest.MoveNext 
Loop

'第四部分: 打扫战场

rsTest.Close: Cnn.Close
Set rsTest = Nothing: Set cmdTest=Nothing: Set Cnn = Nothing
%>


关于Command 对象的使用以后还会在数据库的深入编程中重点讲解。

本讲主要介绍了如何与数据库连接并检索数据库数据,初学者难免会有点糊涂,切记,你只需要学会以下知识点即可:
1. 如何使用OLE DB与Microsoft Access数据库建立连接;
2. 如何使用OLE DB与Microsoft SQL Server数据库建立连接;
如何通过创建Recordset对象检索数据库中的数据。

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本