ASP完整教程(35)
Database Access 组件
我们在 WEB 服务器上运用 WEB应用程序进行的最常见和最实用的任务就是访问服务器端的数据库。而
ASP 内建的 Database Access 组件使得我们能够轻而易举地通过 ActiveX Data Objects (ADO) 访问存储在服务器端的数据库或其他表格化数据结构中的信息。
ADO 是对当前微软所支持的数据库进行操作的最有效和最简单直接的方法,它是一种功能强大的数据访问编程模式,从而使得大部分数据源可编程的属性得以直接扩展到你的 Active Server 页面上。可以使用 ADO 去编写紧凑简明的脚本以便连接到 Open Database Connectivity (ODBC) 兼容的数据库和 OLE DB 兼容的数据源,这样 ASP 程序员就可以访问任何与ODBC 兼容的数据库,包括 MS SQL SERVER、Access、Oracle 等等。如果您是一个对数据库连接有一定了解的脚本编写人员,那么您将发现 ADO 命令语句并不复杂而且容易掌握。同样地,如果您是一个经验丰富的数据库编程人员,您将会正确认识 ADO 的先进的与语言无关性和查询处理功能。熟悉 VB 数据库编程的朋友会发现 ADO 与RDO (Remote Data Objects) 有某种类似的地方。但据说 ADO 的访问的速度更快,内存需要更小。
下面给大家简要介绍一下利用 ASP 的 Database Access 组件通过 ADO 连接并操作 WEB 数据库的步骤
第一步 : 指定想要连接的数据库,有 DSN 和 DSN-less 两种方法。
DSN(Data Source Name 数据源名称 ): 建立一个系统数据源名称,方法如下 :
1、单击“开始”,选设置控制面板。
2、双击图标“32 位 ODBC” , 将弹出一个对话框,选标签“System DSN”
3、单击“Add”添加一个 DSN 入口 , 选择如“Microsoft Access Drive”并确认。
4、在“Data Source Name”栏里输入你希望指定的 DSN, 然后单击“Select”选择数据库存放位置,你可以按“Browse”来选取。
5、以上步骤完成后在 ASP 程序中指定 DSN,如下 :
< %connstr = "DSN"%>
DSN-less:
是另一种通过在 ASP 文件里直接指定数据库文件所在位置,而无需建立 DSN 的方法。由于许多公司没有自己的 WEB 服务器,他们的网站往往是存放在远端的虚拟服务器上,因此要建立和修改 DSN 的设置比较麻烦。而使用 DSN-less 方法直接指定远端数据库所在位置恰恰解决了这一问题,方法如下 :
< %
connstr = "DBQ="+server.mappath("database/source.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MSAccess;ImplicitCommitSync=Yes;MaxBufferSize=512;MaxScanRows=8;
PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;"
%>
在指定了想要连接的数据库后,就可以通过以下方法连接并打开数据库 :
< %
Set Conn = Server.CreateObject("ADODB.Connection")Conn.Open constr
%>
第二步 : 指定想要执行的 SQL 指令,可以使用 RecordSet。
当连接了数据库后就可以对数据库进行操作,比如查询、删除、更新等等,这些操作都是通过 SQL 指令来完成的,如下例在数据库表 datebase 中查询所有姓名中有“A”的记录 :
< %
sql="select * from datebase where name like 'A%%'"
Set rs = Conn.Execute(sql)
%>
尽管 Connection 对象简化了连接数据库和查询任务,但 Connection 对象仍有许多不足。确切地说,检索和显示数据库信息的 Connection 对象不能用于创建脚本,您必须确切知道要对数据库作出的更改,然后才能使用查询实现更改。对于检索数据、检查结果、更改数据库, ADO 提供了 Recordset 对象。正如它的名称所暗示的那样, Recordset 对象有许多您可以使用的特性,根据您的查询限制,检索并且显示一组数据库行,即记录。
Recordset 对象保持查询返回的记录的位置,允许您一次一项逐步扫描结果。根据 Recordset 对象的指针类型属性设置,您可以滚动和更新记录。数据库指针可以让您在一组记录中定位到特定的项。指针还用于检索和检查记录,然后在这些记录的基础上执行操作。
Recordset 对象有一些属性,可用于精确地控制指针的行为,提高您检查和更新结果的能力。
Recordset 的使用方法如下 :
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL 指令 , Conn, 1, 1 ' 读取
或
rs.Open SQL 指令 , Conn, 1, 3 ' 新增、修改、或删除
第三步 : 使用 RecordSet 属性和方法,并显示执行的结果。
通过以上指令,我们创建了一个包含数据的游标 (RecordSet)“rs”,事实上游标是存储在活动内存中的类似记录和字段的数组的东西,当通过 RecordSet 组件创建一个游标时,它从数据提供者的得到一个数据集,并用它来充实游标,我们可以想象 ADO 产生的 RecordSet 是一个象电子表格的记录,它有一行行的记录,在任何时候都有一行是它的当前行,而RecordSet 的字段是用 RecordSet 的Field 集合表示的。下面列出了所创建的 RecordSet 对象 (游标 )的一些属性和方法 :
rs.Fields.Count: RecordSet 对象的字段总数。
rs(i).Name: 第 i 个字段的名称, i 由 0 算起到 rs.Fields.Count-1。
rs(i): 读取第 i 个字段的数据, i 由 0 算起到 rs.Fields.Count-1。
rs(" 字段名称 "): 读取指定字段的数据。
rs.RecordCount: 游标中的数据记录总数。
rs.EOF: 是否已指到最后一条记录。
rs.MoveNext: 将指标移到下一笔记录。
rs.MovePrev: 将指标移到上一笔记录。
rs.MoveFirst: 将指标移到第一笔记录。
rs.MoveLast: 将指标移到最后一笔记录。
rs.Close: 关闭 RecordSet 对象