版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库编程 VC+程序设计 连接数据库的四种方式 ODBC(Open DataBase Connectivity) 提供了应用程序接口API。使得任何一个数据库都可以通 过ODBC驱动器与指定的DBMS相联。用户的程序可以通 过调用ODBC驱动管理器中相应的驱动程序达到管理数据 库的目的。访问数据库时,是由ODBC管理器将应用程序 的数据库访问请示传递给相应的数据库驱动程序,驱动程 序再用SQL语句完成DBMS的访问任务。 DAO(Data Access Objects ) DAO使用Microsoft Jet提供的数据库访问对象集直接访问 DBMS,速度比ODBC要快。 OLE DB是微软是
2、微软“发明发明”的,用来淘汰的,用来淘汰ODBC的,的,OLE DB不光可以连接各种数据库,还可以连接不光可以连接各种数据库,还可以连接exchange、活、活 动目录、甚至操作系统文件目录等各种数据库源(也需要动目录、甚至操作系统文件目录等各种数据库源(也需要 分别使用不同的分别使用不同的“驱动程序驱动程序”) ADO也是微软的,是用来淘汰早起微软的也是微软的,是用来淘汰早起微软的RDO、DAO的的 (ADO可以做可以做RDO、DAO能做的所有事),能做的所有事),ADO在上层,在上层, 通过下面的通过下面的ODBC或者或者OLE DB来访问数据源(注意不是来访问数据源(注意不是 数据库,因
3、为可访问范围包括活动目录等各种数据)。不数据库,因为可访问范围包括活动目录等各种数据)。不 过微软目前的过微软目前的ODBC实际是通过实际是通过OLE DB访问数据源的。访问数据源的。 层次关系:层次关系: 应用程序应用程序 - ADO - ODBC - OLE DB - 数据源数据源 或者或者 应用程序应用程序 - ADO - OLE DB - 数据源数据源 ADO的概念 访问数据库 ADO简介简介 ADO(ActiveX Data Object)是)是Microsoft的数据库应用程序开发的新接口,的数据库应用程序开发的新接口, 是建立在是建立在OLE DB之上的高级数据库访问技术。之上的
4、高级数据库访问技术。 ADO技术基于技术基于COM(Component Object Model),具有),具有COM组件的诸多组件的诸多 优点,可以用来构造可复用应用框架,被多种语言支持,能够访问关系数据库、优点,可以用来构造可复用应用框架,被多种语言支持,能够访问关系数据库、 非关系数据库以及所有的文件系统。非关系数据库以及所有的文件系统。 另外,另外,ADO还支持各种客户还支持各种客户/服务器模式与基于服务器模式与基于Web的数据操作,具有远程数的数据操作,具有远程数 据服务据服务RDS(Remote Data Service)的特性,是远程数据存取的发展方向。的特性,是远程数据存取的发
5、展方向。 应用程序应用程序ADO OLE DB 关系数据库关系数据库 文本文本 目录数据目录数据 主机数据主机数据 非结构化数据非结构化数据 电子邮件电子邮件 地理信息地理信息 图形信息图形信息 ADO技术特点技术特点 易于使用易于使用 高速访问数据源高速访问数据源 可以访问不同的数据源可以访问不同的数据源 可以用于可以用于Microsoft ActiveX页页 程序占用的内存少程序占用的内存少 ADO ADO的概念的概念 1. ADO1. ADO对象模型对象模型 2. Connection2. Connection对象对象 3. Command3. Command对象对象 4. Record
6、set4. Recordset对象对象 1、ADO对象模型对象模型 连接对象连接对象Connection 命令对象命令对象Command 参数对象参数对象Parameter 记录集对象记录集对象Recordset 字段对象字段对象Field 属性对象属性对象Property Errors集合集合 Parameters集合集合 Fields集合集合 Properties集合集合 ADOADO对象模型提供了对象模型提供了7 7种对象、种对象、4 4种集合。分别为:种集合。分别为: 图图1 ADO对象模型对象模型 ADO ADO对象模型包括对象模型包括7 7个对象和个对象和3 3个集合,如图个集合,
7、如图1 1所示。所示。 其中对象及集合的说明见表其中对象及集合的说明见表1 1。 表表1 ADO1 ADO对象描述对象描述 对象对象描述描述 Connection(连接对象)(连接对象)用来建立数据源和用来建立数据源和ADO程序之间的连接程序之间的连接 Command(命令对象)(命令对象) 用来嵌入用来嵌入SQL查询,包括对存储过程的调用查询,包括对存储过程的调用 Parameter(参数对象)(参数对象) 用来传递参数给用来传递参数给SQL查询,在使用存储过程查询,在使用存储过程 时用到时用到 Recordset(记录集对(记录集对 象)象) 用来浏览及操作实际数据库内的数据,这是用来浏览
8、及操作实际数据库内的数据,这是 非常重要的一个对象非常重要的一个对象 Field(字段对象)(字段对象)用来取得一个记录集用来取得一个记录集(Recordset)内不同字段内不同字段 的值的值 Error(错误对象)(错误对象)用来返回一个数据库连接用来返回一个数据库连接(Connection)上的错上的错 误误 Property(属性对象)(属性对象)指明一个指明一个ADO对象的属性对象的属性 1 1、ADOADO对象模型对象模型 表表1 ADO1 ADO集合描述集合描述 集合集合描述描述 Errors所有的所有的Error对象集合。这个集合用来响应一个连接对象集合。这个集合用来响应一个连接
9、(Connection) 上的单一错误上的单一错误 Parameters所有的所有的Parameter对象集合。这个集合关联着一个对象集合。这个集合关联着一个Command对象对象 Fields所有的字段对象集合。这个集合关联着一个所有的字段对象集合。这个集合关联着一个Recordset对象的所有对象的所有 字段字段 Properties所有的所有的Property对象集合。这个集合关联着对象集合。这个集合关联着Connection、 Command、Recordset或者或者Field对象对象 说明:在说明:在ADOADO对象模型中最为重要的对象是三个一对象模型中最为重要的对象是三个一 般对
10、象:般对象:ConnectionConnection对象、对象、CommandCommand对象和对象和RecordsetRecordset 对象,通过这三个对象,可以方便地建立数据库连接,对象,通过这三个对象,可以方便地建立数据库连接, 执行执行SQLSQL查询及存取查询的的结果。查询及存取查询的的结果。 2. Connection2. Connection对象对象 使用使用ADOADO对各种数据源进行各种操作,其中,对各种数据源进行各种操作,其中, ConnectionConnection对象是必不可少的,对象是必不可少的,ConnectionConnection对象可以对象可以 用来在应
11、用程序和数据库中建立一条数据传输连线,用来在应用程序和数据库中建立一条数据传输连线, 在这个基础之上可以使用在这个基础之上可以使用CommandCommand对象及对象及RecordseRecordse对对 象来对象来对ConnectionConnection对象所连接的数据库进行插入删除、对象所连接的数据库进行插入删除、 更新和查询等操作。同拨打电话一样,建立一个更新和查询等操作。同拨打电话一样,建立一个 ConnectionConnection对象就像是拿起话筒,打开一个对象就像是拿起话筒,打开一个 ConnectionConnection对象类似于拨号,而使用对象类似于拨号,而使用Com
12、mandCommand对象及对象及 RecordseRecordse对象已经是在用这条线路通话了。对象已经是在用这条线路通话了。 Connection Connection对象的常用属性见表对象的常用属性见表2 2。 表表2 Connection2 Connection对象的常用属性对象的常用属性 属性属性意义描述意义描述 CommandTimeout 定义了使用定义了使用Execute方法运行一条方法运行一条SQL命令的最长时限,命令的最长时限, 时限结束才能够中断并产生错误。默认值为时限结束才能够中断并产生错误。默认值为30秒秒(设定为设定为 0表示没有限制表示没有限制) Connecti
13、onString 设定连接数据源的信息,包括设定连接数据源的信息,包括FileName、Password、 Userld、DataSource、Provider等参数等参数 ConnectionTimeout 定义了使用定义了使用open方法连接数据源的最长等待时间,默认方法连接数据源的最长等待时间,默认 值为值为15秒秒(设定为设定为0时表示没有限制时表示没有限制) DefaultDatabase定义连接的默认数据库定义连接的默认数据库 Mode 建立连接之前,设定连接的读写方式,决定是否可更改建立连接之前,设定连接的读写方式,决定是否可更改 目前数据。目前数据。0-不设定(默认)、不设定(
14、默认)、1-只读、只读、2-只写、只写、3-读写读写 Provider 设置连接的数据提供者设置连接的数据提供者(数据库管理程序数据库管理程序),默认值是,默认值是 MSDASQL(MicrosotODBC For OLEDB) State读取当前链接对象的状态,取读取当前链接对象的状态,取0表示关闭,表示关闭,1表示打开表示打开 Connection Connection对象的常用方法见表对象的常用方法见表3 3。 表表3 Connection3 Connection对象的方法及描述对象的方法及描述 方法方法意义描述意义描述 Open建立一个与数据源的连接对象建立一个与数据源的连接对象 Cl
15、ose关闭与数据源的连接,并且释放与连接有关的系统资源关闭与数据源的连接,并且释放与连接有关的系统资源 Execute执行执行SQL命令或存储过程,以实现与数据库的通讯命令或存储过程,以实现与数据库的通讯 BeginTrans开始一个新的事务,即在内存中为事务开辟一片内存缓冲区开始一个新的事务,即在内存中为事务开辟一片内存缓冲区 CommitTrans 提交事务,即把一次事务中所有变动的数据从内存缓冲区一次提交事务,即把一次事务中所有变动的数据从内存缓冲区一次 性地写入硬盘,结束当前事务并可能开始一个新的事务性地写入硬盘,结束当前事务并可能开始一个新的事务 RollbackTran s 回滚事
16、务,即取消开始此次事务以来对数据源的所有操作,并回滚事务,即取消开始此次事务以来对数据源的所有操作,并 结束本次事务操作结束本次事务操作 下面对部分方法进行详细说明。下面对部分方法进行详细说明。 Open Open方法:建立一个与数据源的连接对象,打开方法:建立一个与数据源的连接对象,打开 与数据源的连接。其语法格式为:与数据源的连接。其语法格式为: Connobject.Open(connectionstring,UserId, Password)Connobject.Open(connectionstring,UserId, Password) 其中:其中:ConnectstringCon
17、nectstring为可选参数,它是一个字符串为可选参数,它是一个字符串 变量,包含链接的信息。用法参见变量,包含链接的信息。用法参见ConectionstringConectionstring属性。属性。 UserIdUserId为可选参数,它是一个字符串变量,包含建立为可选参数,它是一个字符串变量,包含建立 连接时访问数据库使用的用户名称。连接时访问数据库使用的用户名称。 PasswordPassword为可选参数,它是一个字符串变量,包含建为可选参数,它是一个字符串变量,包含建 立连接时访问数据库使用的密码。立连接时访问数据库使用的密码。 Close Close方法:关闭与数据源的连接,
18、并且释放方法:关闭与数据源的连接,并且释放 与连接有关的系统资源。其语法格式为:与连接有关的系统资源。其语法格式为: Connobject.closeConnobject.close 其中:其中:ConnobjectConnobject为已经创建的为已经创建的ConnectionConnection对象。对象。 使用使用CloseClose方法关闭方法关闭ConnectionConnection对象,但没有从对象,但没有从 内存中删除该对象。因此一个关闭的内存中删除该对象。因此一个关闭的connectionconnection对象对象 还 可 以 用还 可 以 用 o p e no p e n
19、 方 法 打 开 而 不 必 再 次 创 建 一 个方 法 打 开 而 不 必 再 次 创 建 一 个 connectionconnection对象。此外,在使用对象。此外,在使用closeclose方法关闭连接方法关闭连接 时,也将关闭以此连接相关的所有活动的时,也将关闭以此连接相关的所有活动的recoordsetrecoordset 对象。对象。 Execute Execute方法:执行方法:执行SQLSQL命令或存储过程,以命令或存储过程,以 实现与数据库的通讯。其语法为:实现与数据库的通讯。其语法为: 有返回记录的格式:有返回记录的格式: pRs = Connobject.Execut
20、e(CommandText,pRs = Connobject.Execute(CommandText, ReccordAffected, Options) ReccordAffected, Options) 无返回记录的格式:无返回记录的格式: Connobject.Execute CommandText, Connobject.Execute CommandText, ReccordAffected, Options ReccordAffected, Options 其中:其中:pRspRs为创建的为创建的RecordsedRecordsed对象;对象;ConnobjectConnobjec
21、t 为已经创建的为已经创建的ConnectionConnection对象。对象。 CommandType CommandType是一个字符串,它包含一个表名,是一个字符串,它包含一个表名, 或某个将被执行的或某个将被执行的SQLSQL语句;语句;ReccordAffectedReccordAffected为可选为可选 参数,返回此次操作所影响的记录数。参数,返回此次操作所影响的记录数。OptionsOptions为可为可 选参数,用来指定参数的选参数,用来指定参数的CommandTextCommandText参数的性质,参数的性质, 即用来指定即用来指定ADOADO如何解释如何解释Comman
22、dTextCommandText参数的参数值,参数的参数值, 其取值与意义见表其取值与意义见表4 4。 表表4 Options4 Options参数的取值及意义参数的取值及意义 值值意义描述意义描述 1表示被执行的字符串包含一个命令文本表示被执行的字符串包含一个命令文本 2表示被执行的字符串包含一个表名表示被执行的字符串包含一个表名 4表示被执行的字符串包含一个存储过程名表示被执行的字符串包含一个存储过程名 8没有指定字符串的内容没有指定字符串的内容(这是默认值这是默认值) 例:Demo5、6_1 3. Command对象 Command对象用来定义数据库的查询动作,这个 查询一般采用SQL语
23、句,大部分数据库都会支持SQL语 言解释。通过和SQL Server的查询及存储过程的良好 结合,Command对象有更强大的数据库访问能力,无 论是对数据库的插入、更新和删除这类无需返回结果 集的操作,还是对Select查询这样需返回结果集的操 作都一样简单。 Command Command对象的常用属性见表对象的常用属性见表5 5。 表表5 Command5 Command对象的属性对象的属性 属性属性意义描述意义描述 ActiveConnection 定义了定义了Command对象的连接信息,用来指定当前的对象的连接信息,用来指定当前的 Command对象的操作对象是哪个对象的操作对象是
24、哪个Connection对象对象 CommandText 定义传送给数据提供者的命令文本。它被用来设定或返回一定义传送给数据提供者的命令文本。它被用来设定或返回一 个字符串,该字符串包含一个个字符串,该字符串包含一个SQL命令、一个表名或一个存命令、一个表名或一个存 储过程名。默认值为空字符串储过程名。默认值为空字符串 CommandType指示指示CommandTem属性中设定的属性中设定的“命令字符串命令字符串”的类型的类型 CommandTimeout 用来设定等候运行一条命令的最长等待时间,超过该时间命用来设定等候运行一条命令的最长等待时间,超过该时间命 令对象中止并产生一个错误。设定
25、为令对象中止并产生一个错误。设定为0时表示无限期等待时表示无限期等待 Name用来设置和读取一个用来设置和读取一个Command对象的名字对象的名字 Prepared 该属性指示在命令被执行前是否要用命令创建一个预备语句该属性指示在命令被执行前是否要用命令创建一个预备语句 State 用来设置或读取当前用来设置或读取当前Command对象的状态是打开的或关闭对象的状态是打开的或关闭 的的 说明:说明:CommandTypeCommandType属性指示属性指示CammandTextCammandText属性中属性中 设定的设定的“命令字符串命令字符串”的类型,即用来指的类型,即用来指ADOAD
26、O如何解如何解 释释CammandTextCammandText参数的参数值,它的取值与意义与表参数的参数值,它的取值与意义与表4 4 中中OptionsOptions参数的取值及意义相同。参数的取值及意义相同。 CommandCommand对象的常用方法有对象的常用方法有ExecuteExecute方法,用来运方法,用来运 行行CommandTextCommandText属性所设定的属性所设定的SQLSQL查询、查询、SQLSQL说明命令说明命令 或存储过程,以实现与数据库的通讯。其语法为:或存储过程,以实现与数据库的通讯。其语法为: 有返回记录的格式:有返回记录的格式: _Recordse
27、tPtr pRs = pCmd-Execute(NULL, NULL, adCmdText); 例:Demo9、11 其中:其中:pRspRs为创建的为创建的RecordsedRecordsed对象;对象;pCmdpCmd为已经创建为已经创建 的的CommandCommand对象。对象。 RecordAfiectedRecordAfiected为可选参数,返回此次操作所影为可选参数,返回此次操作所影 响的记录数。响的记录数。ParametersParameters为可选参数,表示一个为可选参数,表示一个SQLSQL 语句的参数集合。语句的参数集合。OptionsOptions为可选参数,用来指
28、定为可选参数,用来指定ADOADO 如何解释如何解释CommandTextCommandText参数的参数值,它的取值与意参数的参数值,它的取值与意 义与表义与表4 4中中OptionsOptions参数的取值及意义相同。参数的取值及意义相同。 4. Recordset4. Recordset对象对象 RecordsetRecordset对象对应着对象对应着CommandCommand对象的查询返回结对象的查询返回结 果,或者是直接建立的一个带查询的结果集。它把从果,或者是直接建立的一个带查询的结果集。它把从 数据库内查询到的结果封装在一起,并提供简单快捷数据库内查询到的结果封装在一起,并提供
29、简单快捷 的方式去访问每一条记录内每一字段的数据的方式去访问每一条记录内每一字段的数据. . Recordset Recordset对象实际上是依附于对象实际上是依附于ConnectionConnection对象对象 和和CommandCommand对象之上的。通过建立及开启一个对象之上的。通过建立及开启一个 ConnectionConnection对象,可以与我们关心的数据库建立连线;对象,可以与我们关心的数据库建立连线; 通过使用通过使用CommandCommand对象,则可以告诉数据库我们想要做对象,则可以告诉数据库我们想要做 什么:是插入一条记录,还是查找符合条件的记录;什么:是插入一
30、条记录,还是查找符合条件的记录; 通过使用通过使用RecordsetRecordset对象,则可以方便自如地操作对象,则可以方便自如地操作 CommandCommand对象返回的结果。这三个对象中的每对象返回的结果。这三个对象中的每个都是个都是 必要的,缺一不可。必要的,缺一不可。 (1) Recordset (1) Recordset对象的属性对象的属性 RecordsetRecordset对象的常用属性见表对象的常用属性见表6 6。 表表6 Recordset6 Recordset对象的常用属性对象的常用属性 属性属性意义描述意义描述 ActiveConnectio n 定义了与数据提供者
31、的连接信息,用来指定当前的定义了与数据提供者的连接信息,用来指定当前的 RecordSet对象属于哪个对象属于哪个Connection对象对象 Source 指示指示RecordSet对象的数据源,可以是一个对象的数据源,可以是一个command对象名、对象名、 SQL语句、数据库表或存储过程语句、数据库表或存储过程 CursorType指定指定RecordSet对象所使用的光标类型对象所使用的光标类型 LockType表示编辑时记录的锁定类型表示编辑时记录的锁定类型 Filter用来设定一个过滤条件,以便对用来设定一个过滤条件,以便对RecordSet记录进行过滤记录进行过滤 CacheSi
32、ze表示一个表示一个RecordSet对象在高速缓存中的记录数对象在高速缓存中的记录数 Maxrecords执行一个执行一个SQL查询时,返回查询时,返回RecordSet对象的最大记录数对象的最大记录数 Bof判断记录指针是否到了第一条记录之前判断记录指针是否到了第一条记录之前 Eof判断记录指针是否到了最后一条记录之后判断记录指针是否到了最后一条记录之后 RecordCount 返回返回RecordSet对象的记录数对象的记录数(在使用键盘光标时,该属性返在使用键盘光标时,该属性返 回的可能是不太准确的数值;一般情况下,并不用这种方回的可能是不太准确的数值;一般情况下,并不用这种方 法来统
33、计法来统计RecordSet中的记录数,因为它的性能并不稳定中的记录数,因为它的性能并不稳定) Bookmark书签标记,用来保存存当前记录的位置书签标记,用来保存存当前记录的位置 AbsolutePosition 用来设定用来设定RecordSet对象中当前记录的顺序位置是第几行记对象中当前记录的顺序位置是第几行记 录录 PageSize 表示表示RecordSet对象的页面大小对象的页面大小(每页多少条记录每页多少条记录),默认值为,默认值为 10 PageCount表示表示RecordSet对象的页面个数对象的页面个数 AbsolutePage表示当前记录的页号表示当前记录的页号 Edi
34、tMode 指示当前记录的编辑状态,指示当前记录的编辑状态,0 已被编辑;已被编辑;1 已被修改而未已被修改而未 提交;提交;2 存入数据库的新记录存入数据库的新记录 Status对对RecordSet对象进行批量更新后,查询当前记录的状态对象进行批量更新后,查询当前记录的状态 说明:说明: CursorType CursorType属性指定属性指定RecordSetRecordSet对象所使用的光标类型。对象所使用的光标类型。 不同的光标类型决定了对不同的光标类型决定了对RecordSetRecordSet所能做的操作。所能做的操作。 共有四种光标类型:共有四种光标类型: 0 - 0 - 前
35、滚光标前滚光标(ForwardOnlyCursor),(ForwardOnlyCursor),光标只能向前移动,执行光标只能向前移动,执行 效效率高,是率高,是CursorCursor的默认值;的默认值; 1 - 1 - 键盘光标键盘光标(KeysetCursor)(KeysetCursor),光标可向前向后移动,光标可向前向后移动, RecordSetRecordSet记录集同步反映自它创建后其他用户所作的记录集同步反映自它创建后其他用户所作的 修改和删除,但却不能同步反映自它创建后其他用户新修改和删除,但却不能同步反映自它创建后其他用户新 增加的记录;增加的记录; 2 - 2 - 动态光标
36、动态光标(DynamicCursor)(DynamicCursor),光标可向前向后移动,任何时,光标可向前向后移动,任何时 候候RecordSetRecordSet记录集都同步反映其他用户的任何操作;记录集都同步反映其他用户的任何操作; 3 - 3 - 静态光标静态光标(StaticCursor)(StaticCursor),光标可向前向后移动,自创建,光标可向前向后移动,自创建 后后无法同步反映其他用户所做的任何操作,它的功能简单无法同步反映其他用户所做的任何操作,它的功能简单 但消耗资源少。但消耗资源少。 LockType LockType属性表示编辑时记录的锁定类型。属性表示编辑时记录
37、的锁定类型。 它决定了当不止一个用户试图同时改变一个记录时,它决定了当不止一个用户试图同时改变一个记录时, RecordSetRecordSet如何处理数据记录。如何处理数据记录。 它的取值有:它的取值有: 0 - 0 - 只读锁定,记录只读,不能更新只读锁定,记录只读,不能更新RecordSetRecordSet,为,为 LockTypeLockType的默认值;的默认值; 1 - 1 - 悲观锁定,编辑记录开始立刻锁定,直到提交给悲观锁定,编辑记录开始立刻锁定,直到提交给 数据提供者;数据提供者; 2 - 2 - 乐观锁定,一次锁定一条记录,只有调用乐观锁定,一次锁定一条记录,只有调用Up
38、dateUpdate 方法提交数据时才锁定记录;方法提交数据时才锁定记录; 3 - 3 - 乐观的批量更新,允许同时更新多条记录。乐观的批量更新,允许同时更新多条记录。 Filter Filter属性用来设定一个过滤条件,以便对属性用来设定一个过滤条件,以便对 RecordSetRecordSet记录进行过滤。使用的优点是可以在已经记录进行过滤。使用的优点是可以在已经 存在的存在的RecordSetRecordSet对象上进一步过滤出所需的记录。对象上进一步过滤出所需的记录。 但这种方式增加了系统的开销。它有两种使用方式:但这种方式增加了系统的开销。它有两种使用方式: 方式方式1 1:使用关系
39、表达式,例如:使用关系表达式,例如: Rs.Filter = bh 30Rs.Filter = bh 30 其中其中RsRs是已经创建的是已经创建的RecordSetRecordSet对象;对象;bhbh是是 RecordSetRecordSet对象的字段(数值型)。对象的字段(数值型)。 方式方式2 2:使用准则常量:使用准则常量:0 - 0 - 清除以前的清除以前的FilterFilter, 允许看见所有记录;允许看见所有记录;1 - 1 - 只允许查看已修改但未提交只允许查看已修改但未提交 的记录;的记录;2 - 2 - 允许查看最后删除、允许查看最后删除、ResyncResync、批量
40、更新、批量更新、 或删除批量方式所影响的记录;或删除批量方式所影响的记录;3 - 3 - 允许查看数据库允许查看数据库 最后读取结果的数据。例如:最后读取结果的数据。例如: Rs.Filter = 1Rs.Filter = 1 可以实现更新整个批量记录之前只显示用户修改可以实现更新整个批量记录之前只显示用户修改 的记录,使用户在提交数据之前能够进行检查。的记录,使用户在提交数据之前能够进行检查。 BookMark BookMark属性用来存储当前记录的位置。并属性用来存储当前记录的位置。并 非每一个数据提供者都支持这个属性。当创建一个允非每一个数据提供者都支持这个属性。当创建一个允 许使用许使
41、用BookMarkBookMark属性的属性的RecordSetRecordSet对象时,给每个记对象时,给每个记 录都标上一个独一无二的录都标上一个独一无二的BookMarkBookMark,利用,利用BookMarkBookMark可可 以返回访问过的记录。以返回访问过的记录。 Status Status属性对于多用户连接管理特别有用,属性对于多用户连接管理特别有用, 通过该属性可以看出更新记录的失败原因。它的返回通过该属性可以看出更新记录的失败原因。它的返回 值和意义如表值和意义如表7 7所示。所示。 表表7 Status7 Status属性的值和意义属性的值和意义 值值意义描述意义描述
42、值值意义描述意义描述 0记录更新成功记录更新成功1024存在记录锁定,新记录未保存存在记录锁定,新记录未保存 l新纪录新纪录2048使用乐观并发事件,未保存使用乐观并发事件,未保存 2记录被修改记录被修改4096用户违反完整性规则,未保存用户违反完整性规则,未保存 4记录被删除记录被删除8192很多待定修改,记录未保存很多待定修改,记录未保存 8记录未被修改记录未被修改16384与一存储对象相冲突,未保存与一存储对象相冲突,未保存 16书签不合法,记录未保存书签不合法,记录未保存32768内存不够,记录未保存内存不够,记录未保存 64影响多个记录,未保存影响多个记录,未保存65536用户没有足
43、够权限,未保存用户没有足够权限,未保存 128指向一待定插入,记录未保指向一待定插入,记录未保 存存 131072违反基本数据库原理,未保存违反基本数据库原理,未保存 256操作被取消,记录未保存操作被取消,记录未保存262144记录已从数据源删除记录已从数据源删除 (2) RecordSet (2) RecordSet对象的方法对象的方法 RecordSetRecordSet对象的方法及意义见表对象的方法及意义见表8 8。 表表8 RecordSet8 RecordSet对象的方法及意义对象的方法及意义 方法方法意义描述意义描述 Open打开一个打开一个RecordSet对象对象 Close
44、关闭一个关闭一个RecordSet对象并释放相关的资源对象并释放相关的资源 Clone 创建一个创建一个RecordSet对象的完全拷贝,但只有所用的对象的完全拷贝,但只有所用的 RecordSet对象类型允许使用对象类型允许使用BookMarks时才能使用该方法时才能使用该方法 MoveFirst把把RecordSet指针指向第一行记录指针指向第一行记录 MoveLast 把把RecordSet指针指向最后一条记录指针指向最后一条记录(该该RecordSet必须支持书必须支持书 签签) MovePrevious 把把RecordSet指针上移一行指针上移一行(使用前应判断使用前应判断BOF是
45、否为真;该是否为真;该 RecordSet必须支持书签必须支持书签) Movenext把把RecordSet指针下移一行指针下移一行(使用前应判断使用前应判断EOF是否为真是否为真) Move把把RecordSet指针指向指定的记录指针指向指定的记录 GetPows从一个从一个RecordSet对象读取一行或多行记录到一个数组中对象读取一行或多行记录到一个数组中 NextRecordSet 清除当前的清除当前的RecordSet并执行下一条指令,以传回下一个并执行下一条指令,以传回下一个 RecordSet对象,如果没有下一条指令则返回对象,如果没有下一条指令则返回Nothing给给 Reco
46、rdSet Requery重新执行的重新执行的SQL查询操作,以更新查询操作,以更新RecordSet对象中的数据对象中的数据 Resync从数据源更新当前的从数据源更新当前的RecordSet记录,实现与数据源的同步记录,实现与数据源的同步 Addnew增加一条空纪录增加一条空纪录 Delete删除当前记录删除当前记录 Update保存当前记录的任何变动保存当前记录的任何变动 CancelUpdate取消前一个取消前一个Update方法所做的一切修改方法所做的一切修改 UpdateBatchRecordSet工作在批量方式时,取消对工作在批量方式时,取消对RecordSet的更新的更新 Su
47、ports获取创建的获取创建的RecordSet对象的能力信息对象的能力信息 说明:说明: Open Open方法:打开一个方法:打开一个RecordSetRecordSet对象。其语法对象。其语法 格式为:格式为: Rs.OpenSource, ActiveConnectionRs.OpenSource, ActiveConnection , CursorType, LockType, Option, CursorType, LockType, Option 例:Demo1_1 其中:其中:RsRs为已经创建的为已经创建的RecordSetRecordSet对象;对象;SourceSourc
48、e 为可选参数,可以是一个为可选参数,可以是一个CommandCommand对象名、对象名、SQLSQL字符串字符串 存储过程或数据库的表名;存储过程或数据库的表名;ActiveConnectionActiveConnection参见参见 ActiveConnectionActiveConnection属性;属性;CursorTypeCursorType是是RecordSetRecordSet对对 象所使用的光标类型,用法参见象所使用的光标类型,用法参见CursorTypeCursorType属性;属性; LockTypecLockTypec是编辑是编辑RecordSetRecordSet对象
49、记录时所使用的锁定对象记录时所使用的锁定 类型,用法参见类型,用法参见LockTypeLockType属性;属性;OptionsOptions指示数据提指示数据提 供者如何处理供者如何处理SourceSource的内容类型,它的取值与意义见的内容类型,它的取值与意义见 表表4 4。 使用使用CloseClose方法关闭方法关闭RecordSetRecordSet对象,并不从对象,并不从 内存中删除该对象,只是无法读取其中的数据,但仍内存中删除该对象,只是无法读取其中的数据,但仍 然可以读取它的属性。因此一个关闭的然可以读取它的属性。因此一个关闭的ReccordSetReccordSet对对 象
50、还可以用象还可以用OpenOpen方法打开并保持其原有属性。如果正方法打开并保持其原有属性。如果正 在进行编辑更新数据的操作,在调用在进行编辑更新数据的操作,在调用CloseClose方法前必方法前必 须先调用须先调用UpdateUpdate或或CancelUpdateCancelUpdate方法,否则将会出现方法,否则将会出现 错误。如果以批量模式更新数据记录错误。如果以批量模式更新数据记录(Reccordset(Reccordset的的 LockTypeLockType属性设为属性设为3)3),那么对缓冲区数据的修改将全,那么对缓冲区数据的修改将全 部丢失。另外,使用部丢失。另外,使用Cl
51、oneClone方法复制一个已经打开的方法复制一个已经打开的 RecordSetRecordSet对象,调用对象,调用CloseClose方法不影响任何复制的方法不影响任何复制的 RecordSetRecordSet对象。对象。 Move Move方法用于把记录指针指向指定的记录。方法用于把记录指针指向指定的记录。 其语法格式为:其语法格式为: Move n , startMove n , start 其中其中n n为要移动的记录数,取正时表示向前为要移动的记录数,取正时表示向前( (下下) ) 移动,取负时表示向后移动,取负时表示向后( (上上) )移动;移动;startstart是可选参数
52、,是可选参数, 表示移动的起点。表示移动的起点。 使用使用MoveMove、MoveFirstMoveFirst、MoveLastMoveLast、 MovePreviousMovePrevious、MoveNextMoveNext方法移动记录指针时,需要方法移动记录指针时,需要 注意注意RecordSetRecordSet对象的光标类型。如对象的光标类型。如“前滚光标前滚光标”限限 制了记录指针只能向前移动。制了记录指针只能向前移动。 例Demo8_1 GetRows GetRows方法从一个方法从一个RecordSetRecordSet对象读取一行对象读取一行 或多行记录到一个数组中,一般
53、用来读取大量的数据。或多行记录到一个数组中,一般用来读取大量的数据。 其语法格式为:其语法格式为: Myarray = Rs.GetRows(rows, start, fields)Myarray = Rs.GetRows(rows, start, fields) 其中其中MyarrayMyarray为目标数组名;为目标数组名;RsRs为已经创建的为已经创建的 RecordSetRecordSet对象;对象;RowsRows为返回数组的行数;为返回数组的行数;startstart为读为读 取数据的起点取数据的起点( (书签书签) );FieldsFields为为RecordSetRecordS
54、et的字段。的字段。 AddNew AddNew方法用于增加一条空纪录。调用该方方法用于增加一条空纪录。调用该方 法时在法时在RecordSetRecordSet对象中增加一个新行,并将指针移对象中增加一个新行,并将指针移 到行首以准备保存新数据。该方法一般和到行首以准备保存新数据。该方法一般和UpdateUpdate方法方法 相搭配共同完成数据更新的任务。不过这种方法很消相搭配共同完成数据更新的任务。不过这种方法很消 耗资源、效率最低,最好用耗资源、效率最低,最好用SQLSQL语句来实现数据更新。语句来实现数据更新。 Delete Delete方法用于删除当前记录。当方法用于删除当前记录。当
55、RecordSetRecordSet 工作在批量方式时,可实现批量删除。不过该方法非工作在批量方式时,可实现批量删除。不过该方法非 常消耗系统资源,效率非常低。其语法格式为:常消耗系统资源,效率非常低。其语法格式为: Delete valueDelete value 其中其中value = 1value = 1(默认值)表示该方法只删除当(默认值)表示该方法只删除当 前记录;前记录;value = 2value = 2表示该方法删除所有由表示该方法删除所有由FilterFilter属属 性设定的记录。性设定的记录。 例Demo4_1 MFC访问数据库 1. 连接到数据源 2. 使用Record
56、set对象处理结果 1. 连接到数据源 (1) 创建连接字符串 创建Web数据应用程序的第一步是为ADO提供一种 定位并标识数据源的方法。这一步通过“连接字符串” 实现。连接字符串是一系列用分号分隔的参数,用于 定义诸如数据源提供程序和数据源位置等参数。ADO 使用连接字符串标识OLE DB提供程序并将提供程序指 向数据源。提供程序是一个组件,用来描述数据源并 以行集合的形式将信息展示给应用程序。 表表9 9列出了几种通用数据源的列出了几种通用数据源的OLE DBOLE DB连接字符串。连接字符串。 表表9 9 常用的通用数据源的常用的通用数据源的OLE DBOLE DB连接字符串连接字符串
57、数据源数据源OLE DB连接字符串连接字符串 Microsoft AccessProvider=Microsoft.Jet.OLEDB.4.0;Source=指向指向.mdb文件文件 的物理路径的物理路径 Microsoft SQL Server Provider=SQLOLEDB.1;Source=指向服务器上数据库的路指向服务器上数据库的路 径径 OracleProvider=MSDAORA.1;Source=指向服务器上数据库的路指向服务器上数据库的路 径径 Microsoft Indexing Service Provider=MSIDXS.1;Source=指向文件的路径指向文件的路
58、径 为了向后兼容性,为了向后兼容性,ODBCODBC的的OLE DBOLE DB提供程序支持提供程序支持 ODBCODBC连接字符串语法。表连接字符串语法。表1010列出了常用的列出了常用的ODBCODBC连接字连接字 符串。符串。 表表10 10 常用的常用的ODBCODBC连接字符串连接字符串 数据源驱动程序数据源驱动程序ODBC连接字符串连接字符串 Microsoft AccessDriver=Microsoft Access Driver (*.mdb);DBQ=指向指向.mdb 文件的物理路径文件的物理路径 SQL ServerrDriver=SQL Server;SERVER=指向
59、服务器的路径指向服务器的路径 OracleDriver=Microsoft ODBC for Oracle;SERVER=指向服务指向服务 器的路径器的路径 Microsoft ExcelDriver=Microsoft Excel Driver (*.xls);DBQ=指向指向.xls文件文件 的物理路径的物理路径; DriverID =278 Microsoft Excel 97 Driver=Microsoft Excel Driver (*.xls);DBQ=指向指向.xls文件文件 的物理路径的物理路径;DriverID=790 ParadoxDriver=Microsoft Par
60、adox Driver (*.db);DBQ=指向指向.db文文 件的物理路径件的物理路径; DriverID=26 文本文本Driver=Microsoft Text Driver (*.txt;*.csv); DefaultDir=指指 向向.txt文件的物理路径文件的物理路径 Microsoft Visual FoxPro(带有一(带有一 个数据库容器)个数据库容器) Driver=Microsoft Visual FoxPro Driver;SourceType=DBC;SourceDb=指向指向.dbc文件的物理文件的物理 路径路径 Microsoft Visual FoxPro(不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 根治性肾输尿管全长切除术后护理查房
- 家庭教育辅导与儿童心理成长指南
- 多场景活动策划流程及实施指导书
- 优化医疗安全保障患者利益承诺书7篇范文
- 广东省潮州市湘桥区2026届初三下学期第三次监测英语试题含解析
- 天津市河东区天铁一中学2026届初三下学期第五次过关考试物理试题含解析
- 贵州遵义市正安县重点中学2026年初三(下)入学语文试题试卷(9月份)含解析
- 随州市重点中学2025-2026学年初三下期末质量调研(一模)物理试题含解析
- 系统故障处理进展回复函4篇范本
- 会员优惠活动规则说明7篇范文
- 广东省广州市2024年中考数学真题试卷(含答案)
- 诺瓦星云的在线测评题
- 《“文化走出去”申论练习》名师课件
- 山东省济南市2024年中考数学试卷【附真题答案】
- 电线电缆-采购技术规格书(模板)
- 中考语文小说阅读专题复习+-人物形象分析课件
- MOOC 高等数学(二)-东北大学 中国大学慕课答案
- 2024广西广投产业链服务集团有限公司招聘笔试参考题库附带答案详解
- 人教版五年级下册数学1-8单元测试卷含答案(每单元2套试卷,共16卷)
- 典型安全生产事故案例培训
- 创伤性休克的急救护理(1)课件
评论
0/150
提交评论