ASP动态网站开发教程(第三版)第09章利用ADO组件访问数据库数据库是管理大量、一致、可靠、共享、持久的数据资源的计算机软件产品。数据库软件是动态网站实现互动效果的一个非常重要的核心组件,是支撑以电子商务、网上论坛和信息发布为代表的一系列网络服务的坚强支柱。在动态网页的开发工作中,应用ASP内建的DatabaseAccess组件,可以非常方便地通过ActiveXDateObjects(ADO)对象访问存储在服务器端的数据库中的信息。ASP动态网站开发教程(第三版)教学重点与难点了解数据库的概念和常用术语了解ADO数据模型掌握创建Connection对象的方法掌握Command对象的基本用法掌握创建记录集的方法ASP动态网站开发教程(第三版)9.1应用Access数据库数据库的主要功能是存储与管理数据,在目前市面上存在的多种形式的数据库产品中,关系型数据库最受欢迎并被广泛使用。该类数据库将数据按类别存储在各种数据表中,并且通过数据表之间的关联进行数据的调整和搜索等维护操作。快速掌握MicrosoftAccessAccess数据库基础结构化查询语言简介ODBC简介OLEDB简介ADO对象模型ADO对象简介ASP动态网站开发教程(第三版)9.1.1快速掌握MicrosoftAccessAccess数据库是目前比较流行的数据库管理系统,它是一个运行在Windows系统环境下的桌面关系型数据库,也是OfficeXP的组件之一。Access数据库属于比较简单的小型数据库系统,一般用于小型公司的数据管理。其基本数据库观念与其他大型数据库系统(如Oracle和SQLServer等)并没有太大的差别。Access数据库将数据按类别存储在不同的数据表中,以方便数据的管理和维护。用户要设计数据表,首先要创建一个数据库。ASP动态网站开发教程(第三版)9.1.2Access数据库基础本节将以【练习9-1】创建的数据库db1为基础,介绍组成Access数据库的结构及功能,包括数据库结构、数据表结构、数据内容和字段索引等内容。数据库结构数据表结构数据内容字段索引ASP动态网站开发教程(第三版)9.1.3结构化查询语言简介SQL是结构化查询语言(StructuredQueryLanguage)的缩写,包括查询、定义、操纵和控制4个部分,是一种功能齐全的数据库语言。数据查询是指按要求查找出满足条件的记录的操作。数据定义是指对关系模式一级的定义。数据操纵是指对关系中的具体数据进行增、删、改和更新等操作。数据控制是指对数据访问权限的授予或撤销。SQL具有语言简洁、方便实用、功能齐全等优点。目前,多数数据库管理系统都支持SQL或提供SQL接口。ASP动态网站开发教程(第三版)9.1.4ODBC简介ODBC(OpenDataBaseConnectivity,开放数据库互连)是Microsoft开发的一套读取数据库的解决方案,它将所有对数据库的底层操作全部隐藏在ODBC的驱动程序内核里。对于用户来说,只要构建了一个指向数据库的连接,就可以采用统一的应用程序编程接口(ApplicationProgramInterface,API)实现对数据库的读写,或用相同的代码访问不同格式的数据库。ODBC驱动DSN数据源ASP动态网站开发教程(第三版)9.1.5OLEDB简介OLEDB提供统一数据访问接口的技术标准。可以访问的数据包括标准关系型数据库中的数据,还包括邮件数据、Web上的文本或图形、目录服务(DirectoryServices),以及主机数据库(如IMS和DB2)、服务器数据库(如Oracle和SQLServer)和桌面数据库(如MicrosoftAccess)。OLEDB标准的核心内容就是要求以上这些各种各样的数据存储(DataStore)都提供一种相同的访问接口。这种接口封装了各种数据系统的访问操作,使数据的使用者(应用程序)可以使用同样的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型。OLEDB还提供了一组标准的服务组件,用于提供查询、缓存、数据更新、事务处理等操作。因此,数据提供方只需实现一些简单的数据操作,使用方就可以获得全部的数据控制能力。OLEDB将传统的数据库系统划分为多个逻辑组件,这些组件之间相对独立又相互通信。ASP动态网站开发教程(第三版)9.1.6ADO对象模型ADO是应用层的编程接口,通过OLEDB提供的接口访问数据,这样各种编程语言都能够编写符合OLEDB标准的应用程序。ADO封装了OLEDB中最常用的一些特性,ADO可以在VisualBasic或VisualC++中使用,也可在服务器端脚本中使用。使用ADO时,ASP应用程序和底层数据库间的关系如图所示。ASP应用程序Active数据对象(ADO)OLEDB关系查询引擎游标引擎异步查询引擎OLEDBODBCODBCODBCAccessSQLServer文件索引服务器电子表格数据提供者服务提供者数据提供者ASP动态网站开发教程(第三版)9.1.7ADO对象简介ADO实际上是OLEDB的应用层接口,这种结构也为一致的数据访问接口提供了很好的扩展性,而不再局限于特定的数据源,因此,ADO可以处理各种OLEDB支持的数据源。ADO本身由多个对象组成,这些对象分别负责提供各种数据库操作行为,大致上可以分为连接、修改和查询3个部分,如图9-23所示。ASP动态网站开发教程(第三版)9.2Connection对象Connection对象又称连接对象,用来和数据库建立连接。Connection对象建立连接后,才可以利用Command对象或Recordset对象对数据库进行各种操作。与数据库建立连接Connection对象的属性Connection对象的方法ASP动态网站开发教程(第三版)9.2.1与数据库建立连接建立Connection对象是采用Server对象的CreateObject方法进行的,其语法结构如下:SetConnection对象=Server.CreateObject(ADODB.Connection)其中,ADODB.Connection为所要创建的ADO连接对象。另外,还可用OBJECT标记来创建Connection对象,例如:OBJECTRUNAT=ServerID=cnPROGID=ADODB.Connection/OBJECTASP动态网站开发教程(第三版)9.2.2Connection对象的属性Connection对象的属性及其相关说明如表所示。属性说明Attributes设置Connection对象控制事务处理时的行为CommandTimeoutExecute方法的最长执行截止时间ConnectionString指定Connection对象的数据库连接信息ConnectionTimeoutOpen方法与数据库连接的执行截止时间CursorLocation控制光标的类型。确定是使用客户端(adUseClient)游标引擎,还是使用服务器端(adUseServer)游标引擎。默认值是adUseServerDefaultDatabase在数据提供者提供多个数据库的情况下,如果ConnectString中未指定数据库名称,就使用这里所指定的名称IsolationLevel指定和其他并发事务交互时的行为或事务Mode指定对Connection的读写权限Provider如果ConnectionString中未指定OLEDB数据或服务提供者的名称,就使用这时指定的名称。默认值是MSDASQL(MicrosoftOLEDBProviderforODBC)State指定连接的状态。若是0或adStateClosed,则连接是关闭的;若是1或adStateOpen,则连接是打开的Version返回ADO版本号ASP动态网站开发教程(第三版)9.2.3Connection对象的方法Connection对象的方法及其相关说明如表所示。方法说明Open建立Connection对象和数据库之间的连接Close关闭Connection对象和数据库之间的连接Execute执行数据库查询(可以执行各种操作)Cancel取消未执行完的异步Execute或Open方法BeginTrans开始事务处理CommitTrans提交一个事务处理结果RollbackTrans取消一个事务处理结果ASP动态网站开发教程(第三版)9.3Command对象Command对象定义将对数据源执行的指定命令,这些命令可以是SQL语句、表名、存储过程或其他数据提供者支持的文本格式。Command对象的作用相当于一个查询,使用它可以查询数据库并返回记录集,也可执行大量操作或处理数据库结构。用Command对象执行查询的方式与用Connection、Recordset对象执行查询的方式一样,但使用Command对象可以改善查询。用Command对象的参数查询,可先在数据源上准备一种查询方式,然后用不同的值来重复执行查询,以避免重复发出类似的SQL查询语句。创建Command对象Connection对象的属性Command对象的方法使用Command对象的方法参数查询ASP动态网站开发教程(第三版)9.3.1创建Command对象创建Command对象的语法结构如下:SetCommand对象=Server.CreatObject(ADODB.Command)然后,可用ActiveConnection属性指定要利用的Connection对象名称,语法如下:Command对象.ActiveConnection=Connection对象ASP动态网站开发教程(第三版)9.3.2Command对象的属性Command对象的属性及其相关说明如表所示。属性说明ActiveConnection指定Connection的连接对象CommandText指定数据库的查询信息CommandType指定数据查询信息的类型CommandTimeout指定Command对象的Execute方法的最长执行时间Prepared指定数据查询信息是否要先编译和存储ASP动态网站开发教程(第三版)9.2.3Command对象的方法Command对象的方法及其相关说明如表所示。方法说明Execute执行数据库查询(可以执行各种操作)CreateParameter用来创建一个Parameter子对象Cancel取消一个未确定的异步执行的Execute方法ASP动态网站开发教程(第三版)9.3.4使用Command对象的方法使用Command对象有几个重要的步骤,创建Command对象,指定对象数据库连接,指定SQL指令和引用Execute方法。创建Command对象和连接数据库一样,运用Command对象之前首先必须引用CreateObject对象,创建其对象实体,设定对象识别名称,如下:DimobjCommandSetobjCommand=Server.CreateObject(ADODB.Command)ASP动态网站开发教程(第三版)9.3.5参数查询如果要创建一个使用多次但每次使用不同值的查询,那么应在查询中使用参数,即创建参数查询。参数是查询时所提供值的占位符,它将WHERE子句中固定值用“?”来代替,称作占位符号。这样就避免了在每次查询中重新建立SQL查询语句。一个Parameter对象就是一个参数,Parameters集合就是若干个参数的集合。Parameter对象和Parameters集合都有各自的属性和方法。