1、 9.1 ADO技术简介 ADO组件是微软公司开发的一种强大的数据库管理组件,是ASP存取数据库的重要工具。利用它可以轻松的完成对各种数据库的查询、存储操作。ADO组件是一种基于Internet并且以数据为中心的数据访问接口,这种数据访问接口与应用程序所使用的语言无关。ADO是对数据库进行操作的最有效的和最简单直接的方法,它是一种功能强大的数据访问编程模式。ADO组件提供了7个子对象和4个数据集合,利用这些子对象和数据集合可实现对数据库的访问和控制。9.1.1 ADO组件的对象 ADO组件提供了7个子对象,各对象及其功能如表9-1所示。表9-1 ADO组件的对象 对 象功 能connectio
2、n连接对象,建立与数据库的连接command命令对象,执行对数据库操作,如查询、添加、删除、修改记录等命令recordset记录集对象,表示从数据源返回的结果集field字段对象,用来取得一个记录集(recordset)内全部字段的值parameter参数对象,SQL存储过程或者有参数查询命令中一个参数property属性对象,指明一个ADO对象的属性error错误对象,用来返回一个数据库连接(connection)上的错误9.1.1 ADO组件的对象 在这7个对象之中,其中最主要的对象是connection、command和recordset这3个对象。它们在处理整个数据库的过程中,既分工明
3、确又协调合作,同时功能上既相对独立,也有互相交叉,实际运行时各对象之间关系错综复杂。一般说来,connection对象主要负责与数据库的连接,形象地比喻成数据通道的维护者,command对象负责数据的查询,形象地比喻成数据的挖掘者,recordset对象负责数据的收集整理发布,形象地比喻成数据的发布者。9.1.1 ADO组件的对象 不考虑程序内部处理的机制时,在数据从后台数据库传到前台网页的过程中,他们的逻辑关系可以简化成一种直观的线性关系,如图9-1所示。数据库connection对象command对象recordset对象网页 errors 数据集合 parameters 数据集合 fie
4、lds 数据集合error对象parameter对象field对象图9-1 ADO对象之间的关系9.1.2 ADO组件的数据集合 ADO组件提供了4个数据集合,各数据集合及其功能如表9-2所示。表9-2 ADO数据集合数 据 集 合 功 能 errors 响应一个连接(connection对象)上的详细错误信息 parameters 与一个command对象关联 fields 与一个recordset对象的所有字段关联 properties 与connection、recordset、command等对象关联 9.2 ODBC技术简介 ODBC是数据库服务器的一个标准协议,相当于一个数据库引擎
5、,或者也可以理解为是一种数据库管理的驱动程序,它向访问网络数据库的应用程序提供了一种通用的语言,只要数据库系统在web服务器系统中有相应的ODBC驱动程序,其它任何程序都可以通过ODBC操作该数据库系统。ODBC是一种访问数据库的方法,具有一致性且定义完整的接口,可以用来连接不同的数据库系统,而且不必去顾虑接口兼容性的问题 9.3 Connection对象 要对数据库进行操作,首先要建立一个对数据库的连接通道,这是通过ADO的连接对象connection来进行的。connection对象主要用于建立和管理前台网页与后台数据源的连接,也可以利用connection对象的属性、方法和数据集合等对该
6、数据库进行相关查询操作,实现对数据库的查询、删除、更新和添加记录等操作。9.3.1 建立Connection对象实例 使用connection对象首先必须建立其对象实例,其语法格式如下:格式:set cnn=server.creatobject(adodb.connection)说明:ADO组件的子对象一般要通过server.creatobject建立对象实例才能使用其方法、属性和集合,使用时注意以下几点:;9.3.1 建立Connection对象实例 cnn:表示创建的connection对象实例名;connection对象主要提供了6种方法,如表9-3所示;表9-3 connection对
7、象方法方 法 功 能 方 法 功 能 open 建立与数据库的连接 begintrans 开始事务处理 close 关闭与数据库的连接 committrans 提交事务处理 execute 执行数据库查询 rollbacktrans 取消事务处理 connection对象主要提供了8种属性,如表9-4所示。表9-4 connection对象属性属 性 功 能 connectionstring 数据库连接的字符串信息 connectiontimeout 返回或设置open方法连接数据库的最长等待时间,默认值为15秒 commandtimeout 返回或设置execute方法执行命令的最长等待时间
8、,默认值为30秒 defaultdatabase 定义连接的默认数据库 cursorlocation 控制光标的类型 isolactionlevel 指定事物处理的时机 mode 设定对数据库操作权限,0-不设定(默认)、1-只读、2-只写、3-读写 provider 设置OLE DB提供的程序名称,默认值是msdasq state 读取当前链接对象的状态,0-关闭,1-打开 version 获取ado的版本 9.3.2 数据库连接和Open方法 利用connection对象的open方法可实现对数据库的连接,其语法格式如下:格式:cnn.open dsn;user;password;driv
9、er;dbq;provider 说明:open方法中提供了很多参数;常见参数及其意义如表9-5所示;表9-5 open方法中各参数意义参 数 说 明 参 数 说 明dsn odbc数据源的名称 driver 数据库驱动程序的类型 user 数据库登录的用户名 dbq 数据库的物理路径 password 数据库登录的密码 provider 数据提供者 9.3.2 数据库连接和Open方法各参数之间没有先后顺序之分,多个参数之间用分号(;)分隔;不同的数据库不同的连接方式,可能有不同的参数选择;具体针对access数据库的连接方法,通常有以下3种形式:通过OLE DB提供程序连接到Access数据
10、库 9.3.2 数据库连接和Open方法 说明:OLE DB是一种对关系型和非关系型数据库都可以访问的一种数据库访问技术。利用OLE DB不仅可以访问数据库,也可以访问电子邮件,excel电子表格,web上文本等非数据库的数据源,不推荐使用。通过ODBC驱动程序连接到Access数据库 9.3.2 数据库连接和Open方法 或 说明:server.mappath通常将服务器的虚拟路径转换成相应的物理路径,可移植性好,推荐使用;connectionstring是connection对象的属性,用于设置连接数据库的字符串。9.3.2 数据库连接和Open方法 通过ODBC数据源连接到Access数
11、据库 说明:使用ODBC数据源方法连接时,必须事先建立ODBC数据源,如果移植到别的服务器上,还必须重新设置数据源。9.3.2 数据库连接和Open方法 ODBC数据源设置步骤如下:单击【开始】【控制面板】【管理工具】【数据源ODBC】命令后,弹出如图9-2所示的“ODBC数据源管理器”对话框。在图9-2中单击【系统DSN】命令后,弹出如图9-3所示的“ODBC数据源管理器”对话框。图9-2【ODBC数据源管理器】对话框图9-3【ODBC数据源管理器】对话框在图9-3中单击【添加】按钮,弹出如图9-4所示的“创建新数据源”的对话框。图9-4【创建数据源】对话框图9-5【ODBC Microso
12、ft Access 安装】对话框9.3.2 数据库连接和Open方法在图9-4中选择“Microsoft Access Driver(*.mdb)”,然后单击【完成】按钮,弹出如图9-5所示的“ODBC Microsoft Access 安装”的对话框。在图9-5中输入【数据源名】为“jxglwww”和【说明】为“用户数据库”,如图9-6所示,单击【选择】按钮,弹出如图9-7所示的“选择数据库”对话框。图9-6【选择数据库】对话框图9-7【ODBC Microsoft Access 安装】对话框9.3.2 数据库连接和Open方法9.3.2 数据库连接和Open方法 在图9-7中选择数据库路径
13、为“d:mywebjxgl.mdb”,单击【确定】按钮后,返回上一层,如图9-8所示。在图9-8所示的对话框中单击【确定】按钮后,返回上一层,如图9-9所示。在图9-9单击【确定】按钮,至此执行完毕。9.3.2 数据库连接和Open方法图9-8【ODBC Microsoft Access 安装】对话框图 9-9【ODBC数据源管理器】对话框9.3.3 数据库查询和Execute方法 利用connection对象的execute方法执行SQL命令或存储过程,实现对数据库的查询,其语法格式如下:格式1:set rs=cnn.execute(sql查询字符串)格式2:cnn.execute(sql查
14、询字符串)格式3:cnn.execute sql字符串,number,option 说明:前者打开一个recordset记录集,后两者不打开recordset记录集;number是可选参数,用于获取受影响记录数;9.3.3 数据库查询和Execute方法 option是可选参数,表示对数据库请求执行命令的commandtext类型说明,option取值及其含义如表9-6所示。表9-6 option参数取值及其意义参 数 常 数 参 数 值 说 明 adcmdunknown-1 不确定类型,缺省值 adcmdtext 1一般命令,sql查询字符串 adcmdtable 2一个存在的表名 adcm
15、dstoreproc 3一个存在的过程 9.3.3 数据库查询和Execute方法SQL查询字符串主要有下面四种形式:利用Select语句查询记录600set rs=cnn.execute(strsql)%【例9-01】:connection对象查询示例。数据库的基本操作之select600 查询记录set rs=cnn.execute(strsql)以下建立recordset对象实例rs%9.3.3 数据库查询和Execute方法 图9-10【例9-01】运行结果 9.3.3 数据库查询和Execute方法利用Insert语句查询记录 利用Delete语句删除记录 利用Update语句删除记
16、录 【例9-02】:connection对象插入、删除、更新记录示例。核心提示:如果操作系统的磁盘分区格式是NTFS格式,务必将文件夹和数据库设置成everyone完全控制,否则不能执行插入、删除、更新操作。数据库的基本操作之其他%连接数据库,建立connection对象,jxgl.mdb下面将建立dim cnn,strconnstrconn=dbq=&server.mappath(jxgl.mdb)&_;driver=microsoft access driver(*.mdb)set cnn=server.createobject(adodb.connection)cnn.open strc
17、onn 添加记录strsql=insert into xx(学号,课程代号,成绩)values(02301,05,90)cnn.execute strsql,nresponse.write 共插入&n&条记录。更新记录,将asp程序设计的教师改为叶老师strsql=update kc set 教师=叶老师 where 课程名称=asp程序设计cnn.execute strsql,nresponse.write 共更新&n&条记录。删除记录,删除课程代号为07的记录strsql=delete from kc where 课程代号=07cnn.execute strsql,nresponse.wr
18、ite 共删除&n&条记录。cnn.close 关闭与数据库的连接set cnn=nothing 从内存中释放cnn,可省略%操作结束,请打开数据表查看内容变化。利用connection对象的close方法,可以关闭一个已经打开的connection对象及其相关的各种对象,并释放系统资源。close方法主要是切断与数据库之间的连接通道,同时所有依赖connection对象的command对象或者recordset对象也一道关闭。其语法结构如下:9.3.4 数据库关闭和Close方法9.3.5 事务处理事物处理可以理解为一个整体的一组操作语句序列,只有全部语句都成功执行,事物处理本身才算成功,只
19、要其中一个语句出错,整个处理算作失败,并恢复到处理前的状态。事物处理对于数据的完整性、一致性和安全性,提供了有力的保障。大多数程序不用事务处理也没有关系,发生错误后大不了重新来过一次,可是对于一些经济活动来说,是绝对不允许错误发生的。举例来说,电子支付时,现在要从你的帐户转走200元到对方指定银行帐户中,一般分两步,先从你的帐户减少200元,然后在对方指定银行帐户中增加200元。假如在你的帐户已经转出200元的时候突然遇到意外故障,但是这200元又没有转入对方的帐户。解决这种问题最好办法,采用某种机制,只要有一步出错,就不执行,并返回事务处理前的状态,形象地说就是“一票否决制”或者叫“同生共死
20、”。connection 对象中的begintrans、rollbacktrans和committrans方法正好满足这种“机制”要求。begintrans和committrans用于标记事物处理的开始和结束,在这两个语句之间的语句,就是作为事物处理的语句。判断事物处理是否成功,可通过connection对象的子对象error对象和errors数据集合来实现,若errors数据集合的成员个数不为0,则说明有错误发生,事物处理失败,并用rollbacktrans取消事务处理。【例9-03】:现在有一个bank.mdb的数据库和其中的表daybook,表中有两个帐号00001和00002,现在从帐
21、号00001中转走200到帐号00002的事物处理示例 分析:银行交易采取的是日记帐,每笔交易都必须写入数据表中,为了计算出当前交易的余额,首先必须算出双方交易的余额。表中原始数据如图9-11所示。图9-11 表daybook原始数据 事物处理示例 0 thencnn.errors.clearcnn.rollbacktransresponse.write 转帐不成功。mittransresponse.write 转帐成功。end ifcnn.close 关闭与数据库的连接set cnn=nothing 从内存中释放cnn%“转帐成功”后,表中数据变化如图9-12所示 图9-12 “转帐成功”后
22、,表daybook中数据9.3.6 Errors数据集合和Error对象 error(错误)对象是connection对象的子对象,用来返回数据库操作的过程中发生的错误或警告信息,一个错误就是一个错误对象,所有错误对象组成了errors数据集合。1 Errors数据集合的属性 errors数据集合只有一个属性,即count,用来统计error对象的个数。语法格式如下:2 Errors数据集合的方法 errors数据集合提供了两个方法,下面简要介绍如下:Item方法 用于建立错误对象,语法格式如下:格式:set error 对象=cnn.errors.item(n)说明:n是错误索引值,取值是0
23、到cnn.errors.count-1,实际应用中item可省略。Clear方法 清除错误数据集合中所有的error对象,语法格式如下:格式:cnn.errors.clear 3 Error对象的属性 当程序每发生一个错误时,都会产生一个error对象,不同的错误对象通过错误描述,(可能的)错误原因及处理措施等属性加以区别。error对象常见的属性如表9-7所示。表9-7 error对象的属性属 性 名 说 明 number 错误编号,如3251-数据库不支持该工作的错误,3246-数据传送的错误 description 错误描述 source 错误发生的原因 helpcontext 错误帮助
24、提示文字 helpfile 错误帮助提示文件 nativeerror 数据库服务器产生的原始错误【例9-04】:error对象应用示例。error的对象应用示例 0 then response.write 系统发生&cnn.errors.count&个错误 for i=0 to cnn.errors.count-1 循环错误对象 set errobj=cnn.errors.item(i)建立每个错误对象 response.write 错误编号:&errobj.number&response.write 错误描述:&errobj.description&response.write 错误原因:&
25、errobj.source&response.write 错误提示:&errobj.helpcontext&response.write 帮助文件:&errobj.helpfile&response.write 原始错误:&errobj.nativeerror&next else response.write 数据库连接正常 end if%运行结果如图9-13所示 图9-13【例9-04】运行结果【例9-05】:综合案例实用多表联合查询。9-05.htm,表单界面代码如下:实用查询实用新型信息查询查询条件 学生学号 课程代号 运行结果如图9-14所示
26、。图9-14 9-05.htm运行结果 9-05.asp,表单和数据库处理代码如下:%if request.form(stuid)and request.form(couid)then stuid=request.form(stuid)couid=request.form(couid)下面将建立连接数据库jxgl.mdb,建立connection对象dim cnn,strconnstrconn=dbq=&server.mappath(jxgl.mdb)&_;driver=microsoft access driver(*.mdb)set cnn=server.createobject(adod
27、b.connection)cnn.open strconn建立查询语句dim strsql,rsstrsql=select xsxx.学号,xsxx.姓名,xsxx.性别,xx.成绩&_ from xsxx,xx&_ where xsxx.学号=xx.学号&_ and xsxx.学号=&stuid&_ and xx.课程代号=&couid&set rs=cnn.execute(strsql)返回记录集%学号姓名性别成绩 单击图9-14中的查询按钮,运行结果如图9-15所示。图9-15 最终运行结果9.4 Command对象 command对象又称为命令对象,主要功能是对数据库执行SQL查询的命
28、令对象,就是完成对数据库执行查询、添加、删除、修改记录等操作。command对象是介于connection对象和recordset对象之间的一个对象,通过activeconnection属性连接到connection对象,通过commandtext属性指定查询语句,通过execute方法得到查询结果,并可把结果返回给recordset对象。其外command对象还包含一个子对象parameter对象。9.4.1 建立Command对象实例 命令对象的主要功能是执行一条或者一批sql查询或者驱动SQL Server端的存储过程,使用command对象首先必须建立其对象实例,然后通过其active
29、connection属性连接到connection对象,其语法格式如下:格式:set cmm=server.creatobject(mand)说明:cmm:表示创建的command对象实例。command对象提供了很多属性,常用属性如表9-8所示。表9-8 command对象常用属性属 性 功 能 activeconnection 必选属性,用于指定command对象关联connection对象的字符串 commandtext 必选属性,指定数据库查询字符串,包括sql语句,表名,查询名或存储过程名 commandtpye 指定数据查询信息字符串的类型,其类型取值及其含义如表9-9所示 com
30、mandttimeout command对象的excute方法的最长执行时间,默认值为30秒 prepared 指定数据查询信息是否要先行编译、存储,可取值true或false name 表示该对象的名称 state 用于取得command对象的状态,0-关闭,1-打开 表9-9 commandtpye属性取值及其含义类 型 值 数 值 说 明 adcmdunknow-1未定义,由程序分析确认,系统默认值 adcmdtext 1sql语句 adcmdtable 2数据表名 adcmdstoreproc 4查询名或过程名 command对象提供了2种方法,如表9-10所示 表9-10 comma
31、nd对象常用方法方 法 功 能 execute()负责运行指定的sql命令或存储过程 createparameter()创建新的parameter对象 9.4.2 数据库连接和Activeconnection属性command对象依赖于对象依赖于connection对象,必须通过对象,必须通过activeconnection属性实现与属性实现与connection对象的关联才能继续使用,对象的关联才能继续使用,其语法格式如下:其语法格式如下:也可以隐性建立与connection对象的连接,如:9.4.3 数据库查询和Execute()方法 该方法用来执行数据库查询,包括查询、添加、删除、更新记
32、录等各种操作。类似于connetion对象的execute方法的功能,语法格式如下:格式1:set rs=cmm.execute(number,parameters,options)格式2:cmm.execute number,parameters,options 说明:格式1隐式打开一个recordset记录集,格式2不打开recordset记录集;使用command的execute方法查询时,必须使用mandtext属性指定sql语句;参数不是必须的,各参数含义如表9-11所示。表9-11 command对象常用方法参 数 功 能 number 返回本次查询符合条件的记录数 paramet
33、ers 用来输入查询参数值 options 设定commandtpye类型,取值及其含义同9-9【例9-06】:command对象execute方法应用示例。利用command对象进行数据库的基本操作 mandtext=strsqlset rs=comm.execute 返回记录集do while not rs.eof response.write rs(姓名)&rs.movenext loop添加记录strsql=insert into xsxx(学号,姓名,入学成绩)&_ values(02501,张三,621)mandtext=strsqlcomm.execute更新记录strsql=u
34、pdate xsxx set 姓名=李四 where 学号=mandtext=strsqlcomm.execute 删除记录,删除李玫的记录strsql=delete from xsxx where 姓名=武同学mandtext=strsqlcomm.execute关闭connection对象cnn.close set cnn=nothing%9.4.4 参数查询和Createparameter()方法 所谓参数就是在字符串中使用“?”或者变量代替具体的字段值。command对象通过parameter对象传递参数,所有的parameter对象构成了parameters数据集合。创建parame
35、ter对象的语法格式如下:格式:set para=cmm.createparameter(name,type,direction,size,value)说明:可以用指定的名称、类型、方向、大小和值创建新的parameter对象,各参数含义如下:para:创建一个新的parameter对象;name:参数名称;type:参数数据类型,常用取值如表9-12所示;表9-12 type取值及其含义参 数 数值 功 能 addbtimestamp 135 日期时间类型 addate 7表示日期值 adinterger 3整型 adsingle 4单精度 addouble 5双精度 advarchar 2
36、00变长字符串 adboolean 11逻辑型 adempty 0空值 direction:参数传递方向,表示数据是输入还是输出,常用取值如表9-13所示;表9-13 direction取值及其含义参 数 数值 功 能 adparamunknown 0指示参数方向未知 adparaminput 1传入 adparamoput 2传出 adparaminputoutput 3传入传出 adparamreturnvalue 4从程序返回数值到参数中 size:参数大小,指定最长字节,可省略;value:参数值。9.4.5 Parameters数据集合和parameter对象 parameter对象
37、是command对象的子对象,在进行参数查询时,每一个参数都是一个子对象,所有的parameter对象组成一个parameters数据集合。1 Parameters数据集合的属性 parameters数据集合只有一个属性,即count,用于返回parameter对象的数目。语法格式如下:2 Parameters数据集合的方法 parameters数据集合的方法有4个,简要介绍如下:Append para 将指定的para对象添加到parameters数据集合中,语法格式如下:格式:cmm.parameters.append para 说明:cmm是command对象实例名,para是要创建的p
38、arameter对象实例名。Delete(n)从parameters数据集合中删除n指定的对象,语法格式如下:格式:cmm.parameters.delete(n)说明:cmm是command对象实例名,n取值为0到cmm.parameters.count-1 Item(n)用于获取parameters数据集合中索引序号为n的的对象,语法格式如下:格式:set temppara=comm.parameters.item(n)说明:cmm是command对象实例名,n取值为0到cmm.parameters.count-1 Refresh 重新整理parameters数据集合,语法格式如下:格式:
39、cmm.parameters.refresh 3 Parameter对象的属性 一般情况下不用parameter对象的属性,但如果要修改一个对象(参数)的值或者想得到其值,就要用到其属性。parameter对象常见属性如下。name:参数名称;type:参数数据类型,常用取值如表9-12所示;direction:参数传递方向,表示是输入数据还是输出数据,常用取值如表9-13所示;size:参数大小,指定最长字节,可省略;value:参数值;attributes:指定该参数的数值性质,取值及其含义如表9-14所示。表9-14 attributes取值及其含义参 数 数 值 功 能 adparam
40、long 128允许有相当大的数值 adparamnullable 64允许null数值 adparamsigned 16允许有正负号 4 parameter对象的方法parameter对象的方法只有一个,即appendchunk,用于添加数据到parameter对象的末尾,其语法格式如下:【例9-07】:command简单参数查询示例普通查询。利用command的参数进行数据库操作 请输入查询的课程代号:%if request.form(couid)then paravalue=request.form(couid)建立connection对象 dim cnn,strconn strconn
41、=dbq=&server.mappath(jxgl.mdb)&_ ;driver=microsoft access driver(*.mdb)set cnn=server.createobject(adodb.connection)cnn.open strconn 建立command对象 dim comm set comm=server.createobject(mand)comm.activeconnection=cnn 关联connection对象 建立参数对象 set para=comm.createparameter(课程代号,200,3,20,paravalue)para.appen
42、dchunk2 追加数据到parameter对象的末尾 comm.parameters.append para 将对象添加到parameters数据集合 查询记录 dim rs,strsql strsql=select 课程名称 from kc where 课程代号=?带参数查询的sql语句 mandtext=strsql 设置命令文本字符串 mandtype=1 指定命令类型 set rs=comm.execute do while not rs.eof response.write课程名称是:&(rs(0)rs.movenext loop end if%运行结果如图9-16所示。图9-16
43、【例9-07】运行结果【例9-08】:command多参数查询示例更新查询。利用command的参数进行数据库操作 学号:专业:%if request.form(stuid)and request.form(subname)then parastuid=request.form(stuid)parasubname=request.form(subname)建立connection对象 dim cnn,strconn strconn=dbq=&server.mappath(jxgl.mdb)&_ ;driver=microsoft access driver(*.mdb)set cnn=serv
44、er.createobject(adodb.connection)cnn.open strconn 建立command对象 dim comm set comm=server.createobject(mand)comm.activeconnection=cnn 关联connection对象 查询记录,检查输入的学号是否存在 Dim rs1,strSql1 strSql1=select*from xsxx where 学号=¶stuID&comm.CommandText=strSql1 设置命令文本字符串comm.CommandType=1 指定命令类型Set rs1=comm.Exec
45、ute 返回记录集if rs1.Eof and rs1.bof thenResponse.Write 学号有误,重新输入!rs1.closeresponse.End()end if 更新记录 dim rs,strsql strsql=update xsxx set 专业=?where 学号=?带参数查询的sql语句 mandtext=strsql 设置命令文本字符串 mandtype=1 指定命令类型 建立参数对象 set prmsubname=comm.createparameter(专业,200,3,20,parasubname)comm.parameters.append prmsubn
46、ame set prmstuid=comm.createparameter(学号,200,3,20,parastuid)comm.parameters.append prmstuid comm.execute%学号为【】的同学:你已经成功申请【】专业。运行结果如图9-17所示。图9-17 【例9-08】运行结果 9.5 Recordset对象 在创建web数据库应用程序的过程中,一般是用conncetion对象建立数据库连接,是用command对象执行数据库查询,而用recordset对象来处理返回的数据。使用recordset对象之前必须建立其对象实例,标准语法格式如下:格式:set rs=
47、server.creatobject(adodb.recordset)说明:创建一个recordset对象实例,使用时注意以下几点:rs:表示创建的recordset对象实例名;recordset对象提供了丰富的方法来操作记录集,常用的方法如表9-15所示。表9-15 recordset对象的方法方 法功 能 open 必选方法,打开记录集 close 关闭记录集 requery 重新打开记录集 movefirst 定位到第1条记录 movelast 定位到最后一条记录 moveprevious 移动到上一条记录 movenext 最重要的方法,移动到下一条记录 move n,start 向前
48、向后移过n条记录,n为正值向前移动,n为负值向后移动,start取0从当前记录开始,取1从表头开始,取2从表尾开始 表9-15 续getrows(n)读取n个记录到二维数组中第一维表示字段名(列),第二维表示字段值(行),n取-1时为全部记录 find(查询条件,跳过记录行数,查询方向,开始位置)查询满足条件的单记录,找到记录指针定位到该记录,查询条件是逻辑表达式,可包括模糊运算符,查询方向是指向前向后搜索 addnew 字段名数组,字段值数组 在表尾添加一条新记录,指针指向该记录,缺省时,添加一条空白记录 delete 删除当前记录 update字段名数组,字段值数组 保存对当前记录所做的修
49、改,执行addnew和delete方法后,除非执行移动了记录指针命令,否则一般要求执行update才能更新数据库 cancelupdate 取消addnew和delete对当前记录所做的修改 save 文件名 将记录集保存到文件中 updatebatch affectrecords 保存对一个或多个记录的修改,affectrecords表示批量更新的条件,如表9-16所示 cancelbatch 取消一批更新 resyncaffectrecords 更新当前记录集,实现与数据源同步,affectrecords取值及其含义如表9-16所示 表9-16 affectrecords取值及其含义类 型
50、 数值 功 能 adaffectcurrent 1只对当前记录做同步更新 adaffectgroup 2对所有匹配于filter属性的记录行做同步更新 adaffectall 3对所有recordset对象内的数据做同步更新 recordset对象也提供了丰富的属性来操作记录集,常用的属性如表9-17所示。表9-17 recordset对象的属性属属 性性 意意 义义 描描 述述 source 指示数据的来源,可以是一个command对象名、sql语句、表名或存储过程 activeconnection 指定当前的记录集对象属于哪个connection对象 cursortype 指定record