第12章利用ADO实现网页与 数据库的链接 ADO是Active Data Object缩写,是针 对当前Microsoft软件所支持的数据进行操 作的最有效、最简单、功能最强大的方法。 它能自如地控制数据的显示、查询以及对 数据的修改、删除和添加。通过本章学习 应该掌握以下内容: 1.ADO各种对象和集合 2.利用ADO存取组件进行数据库连接利用 Dreamweaver编辑各种超连接的方法
ADO是Active Data Object缩写,是针 对当前Microsoft软件所支持的数据进行操 作的最有效、最简单、功能最强大的方法。 它能自如地控制数据的显示、查询以及对 数据的修改、删除和添加。通过本章学习, 应该掌握以下内容: 1. ADO各种对象和集合 2. 利用ADO存取组件进行数据库连接利用 Dreamweaver编辑各种超连接的方法 第12章 利用ADO实现网页与 数据库的链接
12.1利用ADO编写新闻发布系统 新闻发布系统能带给浏览者许多的方便,就像布告栏 样,可以让在校师生和外界单位了解学校当天或是最近发 生的大事,以及公布短期内学校的主要工作计划等等。 具体来说,使用AD0数据库链接技术来完成输入新闻 和查看新闻,需要用链接对象的Open方法来建立数据库链 接,用链接对象的Execute方法来执行SQL查询语句和操作 命令(把新闻信息保存到数据库、或者从数据库中查找新 闻信息),还需要使用AD0记录集来显示新闻(把数据库 中找出来的新闻以一定的格式显示到新闻发布系统)。 书上给出了示例中新闻发布系统得源代码以及一些 解释
12.1 利用ADO编写新闻发布系统 新闻发布系统能带给浏览者许多的方便,就像布告栏一 样,可以让在校师生和外界单位了解学校当天或是最近发 生的大事,以及公布短期内学校的主要工作计划等等。 具体来说,使用ADO数据库链接技术来完成输入新闻 和查看新闻,需要用链接对象的Open方法来建立数据库链 接,用链接对象的Execute方法来执行SQL查询语句和操作 命令(把新闻信息保存到数据库、或者从数据库中查找新 闻信息),还需要使用ADO记录集来显示新闻(把数据库 中找出来的新闻以一定的格式显示到新闻发布系统)。 书上给出了示例中新闻发布系统得源代码以及一些 解释
12.2AD0概述 ADO定义了三个一般对象:Connection对象、Command>对象 和Recordset>对象,通过这三个对象,用户可以方便地建立数据库 连接、执行SOL查询及存取查询的结果。 下面列出了ADO的重要接口: Connection(连接):该对象代表打开的文件与数据源的连接。 Eror(错误集):包含在响应涉及提供者的单个失败时产生 的所有ErrorX对象。 Command(命令):该对象定义了对数据源执行的指定命令。 Parameter(参数):这个接口表示传给Command的参数。 Recordset(游标):这是功能最强大但最复杂的接口,它含有 包含数据的游标。用户可使用Recordset>对象操作来自提供者的数 据。 Field(字段):该接口表示Recordset>对象中的某一列数据, 同时能返回游标对象的一些关于数据本身的属性和参数。 Property(属性):包含特定对象实例的所有Property>对象
12.2 ADO概述 ADO定义了三个一般对象:Connection对象、Command对象 和Recordset对象,通过这三个对象,用户可以方便地建立数据库 连接、执行SOL查询及存取查询的结果。 下面列出了ADO的重要接口: Connection (连接):该对象代表打开的文件与数据源的连接。 Error(错误集):包含在响应涉及提供者的单个失败时产生 的所有Error对象。 Command(命令):该对象定义了对数据源执行的指定命令。 Parameter(参数):这个接口表示传给Command的参数。 Recordset(游标):这是功能最强大但最复杂的接口,它含有 包含数据的游标。用户可使用Recordset对象操作来自提供者的数 据。 Field(字段):该接口表示Recordset对象中的某一列数据, 同时能返回游标对象的一些关于数据本身的属性和参数。 Property(属性):包含特定对象实例的所有Property对象
12.3 Connection对象 Connection>对象是数据源的一个开放连接。它跟踪正在使用的 DSN连接保持的时间以及其他定义的数据库的属性。 12.3.1 Connection对象的方法 1.Open方法 Connection对象的Open方法用来初始化一个连接,只有使用了 Connection对象的Open方法后,Connection对象才会真正存在,然 后才能发命令对数据源产生作用。通常在使用Ope方法时有如下两 种途径: (1)直接将连接字符串传给Opem方法 (2)利用它的ConnectionString属性 之% conn.Connectionstring="DSN=STUDENT;UID=uid;PWD=pwd" conn.Open %>
12.3 Connection对象 Connection对象是数据源的一个开放连接。它跟踪正在使用的 DSN连接保持的时间以及其他定义的数据库的属性。 12.3.1 Connection对象的方法 1.Open方法 Connection对象的Open方法用来初始化一个连接,只有使用了 Connection对象的Open方法后,Connection对象才会真正存在,然 后才能发命令对数据源产生作用。通常在使用Open方法时有如下两 种途径: (1)直接将连接字符串传给Open方法 (2)利用它的ConnectionString属性
2.Close7方法 当调用了Clos©方法后,系统就停止了同数据源之间的连接,并且 释放与连接有关的系统资源。当调用此方法时,不只是关闭 Connection对象,而且还关闭了其他正在使用该Connection对象的 ADO对象。不过Close方法只是释放与其相关的系统资源, Connection>对象本身并没有释放。因此,一个关闭的Connection对 象还可以接着用Ope方法打开,而不用再次创建。要真正释放所 有其占用的资源,只需: 3.BeginTrans7方法 ADO的一个重要的功能是执行并控制数据源的事务操作。事务即 在一次操作中对数据库的多次写的动作。一次事务活动要么全部成 功,要么全部失败。使用事务的好处在于它能提供很好的机会优化 对数据源进行写操作的过程。它让ADO知道任何对数据源的修改还 都没有写到硬盘上,还在缓冲区中。往缓冲区中写东西要比硬盘快 得多,这样就能够大大的提高系统性能
2.Close方法 当调用了Close方法后,系统就停止了同数据源之间的连接,并且 释放与连接有关的系统资源。当调用此方法时,不只是关闭 Connection对象,而且还关闭了其他正在使用该Connection对象的 ADO对象。不过Close方法只是释放与其相关的系统资源, Connection对象本身并没有释放。因此,一个关闭的Connection对 象还可以接着用Open方法打开,而不用再次创建。要真正释放所 有其占用的资源,只需: 3.BeginTrans方法 ADO的一个重要的功能是执行并控制数据源的事务操作。事务即 在一次操作中对数据库的多次写的动作。一次事务活动要么全部成 功,要么全部失败。使用事务的好处在于它能提供很好的机会优化 对数据源进行写操作的过程。它让ADO知道任何对数据源的修改还 都没有写到硬盘上,还在缓冲区中。往缓冲区中写东西要比硬盘快 得多,这样就能够大大的提高系统性能
4.CommitTrans7方法 当BeginTrans方法被调用后,数据并没有写到硬盘,所以 Connectioni调用CommitTrans方法把所有的数据写到硬盘上。该方法 把一次事务的操作一次全部写到硬盘上。然后就关闭此次事务。 5.Execute方法 Connection的主要任务是在最高层控制与数据源之间的交互作用, 但是该对象也能执行SQL语句及存储过程。但是利用Connection对象 返回数据时,要抽取的信息是基本的游标即只能读和只能向前的游标, 使用Execute7方法的基本语句是: Set myRecordset=Conn.Execute CommandText.RecordAffected. Options) 其中: CommandText: 是一个字符串,它包含一个表名、或某个将被执行 的SQL语句。 RecordAffected:是个变量,数据提供者将它返回此次操作所影响 的记录数。 Options: 用来指定Commandstring参数的性质
4.CommitTrans方法 当 BeginTrans方 法被调 用后, 数据并 没有写 到硬盘 ,所以 Connection调用CommitTrans方法把所有的数据写到硬盘上。该方法 把一次事务的操作一次全部写到硬盘上。然后就关闭此次事务。 5.Execute方法 Connection的主要任务是在最高层控制与数据源之间的交互作用, 但是该对象也能执行SQL语句及存储过程。但是利用Connection对象 返回数据时,要抽取的信息是基本的游标即只能读和只能向前的游标。 使用Execute方法的基本语句是: Set myRecordset=Conn.Execute ( CommandText.RecordAffected. Options) 其中: CommandText:是一个字符串,它包含一个表名、或某个将被执行 的SQL语句。 RecordAffected:是个变量,数据提供者将它返回此次操作所影响 的记录数。 Options:用来指定Commandstring参数的性质
6.RollbackTrans7方法 这个方法和CommitTrans7方法相反,它是取消此次事务以来对 数据源所做的所有操作,并不写入数据源。同CommitTrans方法 样,调用此方法,本次事务结束。 12.3.2 Connection的属性 Connection对象的属性是用来控制高级的数据处理。 1.Attributes属性 该属性定义了对象一个或多个特点。对于Connection对象来说 Attributes属性控制着事务成功或失败后Connection要如何向数据库 写数据。如果Attributes设置为262144或者adX-actAbortRetaining 的ADODB的常量,那么如果事务被取消,另一个事务会自动启动。 2.Mode属性 Mode属性用来表示连接的写权限,只能在Connection对象没有打 开的情况下进行设置。 3.Version属性 该属性用来查询ADO的版本号
6.RollbackTrans方法 这个方法和CommitTrans方法相反,它是取消此次事务以来对 数据源所做的所有操作,并不写入数据源。同CommitTrans方法一 样,调用此方法,本次事务结束。 12.3.2 Connection的属性 Connection对象的属性是用来控制高级的数据处理。 1.Attributes属性 该属性定义了对象一个或多个特点。对于Connection对象来说, Attributes属性控制着事务成功或失败后Connection要如何向数据库 写数据。如果Attributes设置为262144或者adX- actAbortRetaining 的ADODB的常量,那么如果事务被取消,另一个事务会自动启动。 2.Mode属性 Mode属性用来表示连接的写权限,只能在Connection对象没有打 开的情况下进行设置。 3.Version属性 该属性用来查询ADO的版本号
4,Provider属性 该属性用来设置或返回数据来源的名字。它的缺省值是ODBC 数据来源,对于OLEDB,它的返回值为“MSDASQL”。 5.CommandTimeout属性 该属性定义了允许对数据源的操作终止并产生一个错误的等待 时间。可用它的属性来定义连接业务很大或服务器很忙时如何操作。 6.Connectionstring属性 该属性将返回一个字符串,它包含创建数据连接时所用的所有 信息。它可以是DNS,也可以是连接数据源时的所有参数。 7,DefaultDatabase属性 使用DefaultDatabase)属性可设置或返回指定Connection对象上 默认数据库的名称。 如果有默认数据库,SQL字符串可使用非限定语法访问该数据 库中的对象。如要访问DefaultDatabase属性中指定数据库以外的数 据库中的对象,对象名必须与所需的数据库名称匹配。连接时,提 供者将默认数据库信息写入DefaultDatabase属性。某些提供者对于 每个连接只允许一个数据库,在此情况下将不能更改 DefaultDatabase属性
4.Provider属性 该属性用来设置或返回数据来源的名字。它的缺省值是ODBC 数据来源,对于OLE DB,它的返回值为“MSDASQL”。 5.CommandTimeout属性 该属性定义了允许对数据源的操作终止并产生一个错误的等待 时间。可用它的属性来定义连接业务很大或服务器很忙时如何操作。 6.Connectionstring属性 该属性将返回一个字符串,它包含创建数据连接时所用的所有 信息。它可以是DNS,也可以是连接数据源时的所有参数。 7.DefaultDatabase属性 使用DefaultDatabase属性可设置或返回指定Connection对象上 默认数据库的名称。 如果有默认数据库,SQL字符串可使用非限定语法访问该数据 库中的对象。如要访问DefaultDatabase属性中指定数据库以外的数 据库中的对象,对象名必须与所需的数据库名称匹配。连接时,提 供者将默认数据库信息写入DefaultDatabase属性。某些提供者对于 每个连接只允许一个数据库 , 在 此 情 况 下 将 不 能 更 改 DefaultDatabase属性
12.4 Recordset>对象 Recordset是ADO的一个非常重要的对象。ADO一半以上的文档 都是关于Recordset的。 12.4.1 Recordset,方法 1.打开、关闭和复制Recordset的方法 (I)Open方法Open方法是用来打开一个给予ActiveConnection和 Source属性的Recordset。在把连接和原信息作为参数传给Recordset 的Open方法时,游标被打开且该方法所有相应的属性值也被继承下 来。 (2)Close方法Close方法用于关闭Recordset对象并释放相关资源 同Connection对象一样,在调用setRecordSet=nothing.之前,它仍然 存在,只需要重新打开,而不需要创建。在允许关闭当前编辑的记 录前,必须首先调用Cancelupdate.或Update方法,否则会出现错误 但是,如果以批量模式更新记录,那么对缓冲区记录所做的修改将 全部丢失。 (3)Clone方法Clone方法用来创建一个Recordset>对象的完全拷 贝。采用该方法,可以为任何Recordset维持多个当前的记录。但是 只有所用的Recordse类型允许使用BookMa-rks时才能使用这种方法
12.4 Recordset对象 Recordset是ADO的一个非常重要的对象。ADO一半以上的文档 都是关于Recordset的。 12.4.1 Recordset方法 1.打开、关闭和复制Recordset的方法 (1)Open方法 Open方法是用来打开一个给予ActiveConnection和 Source属性的Recordset。在把连接和原信息作为参数传给Recordset 的Open方法时,游标被打开且该方法所有相应的属性值也被继承下 来。 (2)Close方法 Close方法用于关闭Recordset对象并释放相关资源。 同Connection对象一样,在调用setRecordSet=nothing之前,它仍然 存在,只需要重新打开,而不需要创建。在允许关闭当前编辑的记 录前,必须首先调用Cancelupdate或Update方法,否则会出现错误。 但是,如果以批量模式更新记录,那么对缓冲区记录所做的修改将 全部丢失。 (3)Clone方法 Clone方法用来创建一个Recordset对象的完全拷 贝。采用该方法,可以为任何Recordset维持多个当前的记录。但是 只有所用的Recordset类型允许使用BookMa-rks时才能使用这种方法
2.编辑修改数据的方法 (I)addNew方法addNew方法用来向数据库中增加新纪录。调用 该方法时即在Rec-ordset中开始一个新行,并将指针移到行首以准 备加入新的数据。是效率最低的一种修改方法,最好用$QL来实现: (2)Delete方法Delete方法用来删除当前记录。它与addNew方法 一样效率很低,但是它能够批量删除。当在批量模式相关联的 RecordsetE中使用Delete方法时,Delete方法只是将当前记录作上删 除标记。通过这种方法RecordsetT可以处理数据缓冲集合。 (3)Update方法Update方法表示将对Recordset对象中的当前记 录的任何修改保存在数据源中,条件是Recordset能够允许更新且 不是工作在批量更新模式下。 (4)CancelUpdate方法CancelUpdate方法用来取消在调用Update 方法前所作的一切修改。 (5)UpdateBatch方法 如果工作在批量更新模式下,该方法将 取消对Recordset的修改。 当取消一个批量操作时,可以指定缓冲区的一个子集,以采用 CancelBatchi方法的一些Affe-ctrecordsz变量在其上面的操作
2.编辑修改数据的方法 (1)addNew方法 addNew方法用来向数据库中增加新纪录。调用 该方法时即在Rec-ordset中开始一个新行,并将指针移到行首以准 备加入新的数据。是效率最低的一种修改方法,最好用SQL来实现。 (2)Delete方法 Delete方法用来删除当前记录。它与addNew方法 一样效率很低,但是它能够批量删除。当在批量模式相关联的 Recordset中使用Delete方法时,Delete方法只是将当前记录作上删 除标记。通过这种方法Recordset可以处理数据缓冲集合。 (3)Update方法 Update方法表示将对Recordset对象中的当前记 录的任何修改保存在数据源中,条件是Recordset能够允许更新且 不是工作在批量更新模式下。 (4)CancelUpdate方法 CancelUpdate方法用来取消在调用Update 方法前所作的一切修改。 (5)UpdateBatch方法 如果工作在批量更新模式下,该方法将 取消对Recordset的修改。 当取消一个批量操作时,可以指定缓冲区的一个子集,以采用 CancelBatch方法的一些Affe-ctrecords变量在其上面的操作