ado连接数据库_第1页
ado连接数据库_第2页
ado连接数据库_第3页
ado连接数据库_第4页
ado连接数据库_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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之上的高级数据库访问技术。之上的高级数据库访问技术。 ADO技术基于技术

4、基于COM(Component Object Model),具有),具有COM组件的诸多组件的诸多优点,可以用来构造可复用应用框架,被多种语言支持,能够访问关系数据库、优点,可以用来构造可复用应用框架,被多种语言支持,能够访问关系数据库、非关系数据库以及所有的文件系统。非关系数据库以及所有的文件系统。 另外,另外,ADO还支持各种客户还支持各种客户/服务器模式与基于服务器模式与基于Web的数据操作,具有远程数的数据操作,具有远程数据服务据服务RDS(Remote Data Service)的特性,是远程数据存取的发展方向。的特性,是远程数据存取的发展方向。应用程序应用程序ADOOLEDB关系数

5、据库关系数据库文本文本目录数据目录数据主机数据主机数据非结构化数据非结构化数据电子邮件电子邮件地理信息地理信息图形信息图形信息ADO技术特点技术特点 易于使用易于使用 高速访问数据源高速访问数据源 可以访问不同的数据源可以访问不同的数据源 可以用于可以用于Microsoft ActiveX页页 程序占用的内存程序占用的内存少少 ADO ADO的概念的概念 1. ADO1. ADO对象模型对象模型 2. Connection2. Connection对象对象 3. Command3. Command对象对象 4. Recordset4. Recordset对象对象1、ADO对象模型对象模型 连接

6、对象连接对象Connection 命令对象命令对象Command 参数对象参数对象Parameter 记录集对象记录集对象Recordset 字段对象字段对象Field 属性对象属性对象Property Errors集合集合 Parameters集合集合 Fields集合集合 Properties集合集合 ADOADO对象模型提供了对象模型提供了7 7种对象、种对象、4 4种集合。分别为:种集合。分别为:图图1 ADO对象模型对象模型 ADO ADO对象模型包括对象模型包括7 7个对象和个对象和3 3个集合,如图个集合,如图1 1所示。所示。其中对象及集合的说明见表其中对象及集合的说明见表1

7、1。表表1 ADO1 ADO对象描述对象描述对象对象描述描述Connection(连接对象)(连接对象)用来建立数据源和用来建立数据源和ADO程序之间的连接程序之间的连接Command(命令对象)(命令对象) 用来嵌入用来嵌入SQL查询,包括对存储过程的调用查询,包括对存储过程的调用Parameter(参数对象)(参数对象) 用来传递参数给用来传递参数给SQL查询,在使用存储过程查询,在使用存储过程时用到时用到Recordset(记录集对(记录集对象)象)用来浏览及操作实际数据库内的数据,这是用来浏览及操作实际数据库内的数据,这是非常重要的一个对象非常重要的一个对象Field(字段对象)(字段

8、对象)用来取得一个记录集用来取得一个记录集(Recordset)内不同字段内不同字段的值的值Error(错误对象)(错误对象)用来返回一个数据库连接用来返回一个数据库连接(Connection)上的错上的错误误Property(属性对象)(属性对象)指明一个指明一个ADO对象的属性对象的属性1 1、ADOADO对象模型对象模型表表1 ADO1 ADO集合描述集合描述集合集合描述描述Errors所有的所有的Error对象集合。这个集合用来响应一个连接对象集合。这个集合用来响应一个连接(Connection) 上的单一错误上的单一错误Parameters所有的所有的Parameter对象集合。这个

9、集合关联着一个对象集合。这个集合关联着一个Command对象对象Fields所有的字段对象集合。这个集合关联着一个所有的字段对象集合。这个集合关联着一个Recordset对象的所有对象的所有字段字段Properties所有的所有的Property对象集合。这个集合关联着对象集合。这个集合关联着Connection、Command、Recordset或者或者Field对象对象 说明:在说明:在ADOADO对象模型中最为重要的对象是三个一对象模型中最为重要的对象是三个一般对象:般对象:ConnectionConnection对象、对象、CommandCommand对象和对象和RecordsetRe

10、cordset对象,通过这三个对象,可以方便地建立数据库连接,对象,通过这三个对象,可以方便地建立数据库连接,执行执行SQLSQL查询及存取查询的的结果。查询及存取查询的的结果。2. Connection2. Connection对象对象 使用使用ADOADO对各种数据源进行各种操作,其中,对各种数据源进行各种操作,其中,ConnectionConnection对象是必不可少的,对象是必不可少的,ConnectionConnection对象可以对象可以用来在应用程序和数据库中建立一条数据传输连线,用来在应用程序和数据库中建立一条数据传输连线,在这个基础之上可以使用在这个基础之上可以使用Comm

11、andCommand对象及对象及RecordseRecordse对对象来对象来对ConnectionConnection对象所连接的数据库进行插入删除、对象所连接的数据库进行插入删除、更新和查询等操作。同拨打电话一样,建立一个更新和查询等操作。同拨打电话一样,建立一个ConnectionConnection对象就像是拿起话筒,打开一个对象就像是拿起话筒,打开一个ConnectionConnection对象类似于拨号,而使用对象类似于拨号,而使用CommandCommand对象及对象及RecordseRecordse对象已经是在用这条线路通话了。对象已经是在用这条线路通话了。 Connectio

12、n Connection对象的常用属性见表对象的常用属性见表2 2。表表2 Connection2 Connection对象的常用属性对象的常用属性属性属性意义描述意义描述CommandTimeout定义了使用定义了使用Execute方法运行一条方法运行一条SQL命令的最长时限,命令的最长时限,时限结束才能够中断并产生错误。默认值为时限结束才能够中断并产生错误。默认值为30秒秒(设定为设定为0表示没有限制表示没有限制)ConnectionString设定连接数据源的信息,包括设定连接数据源的信息,包括FileName、Password、Userld、DataSource、Provider等参数

13、等参数ConnectionTimeout定义了使用定义了使用open方法连接数据源的最长等待时间,默认方法连接数据源的最长等待时间,默认值为值为15秒秒(设定为设定为0时表示没有限制时表示没有限制)DefaultDatabase定义连接的默认数据库定义连接的默认数据库Mode建立连接之前,设定连接的读写方式,决定是否可更改建立连接之前,设定连接的读写方式,决定是否可更改目前数据。目前数据。0-不设定(默认)、不设定(默认)、1-只读、只读、2-只写、只写、3-读写读写Provider设置连接的数据提供者设置连接的数据提供者(数据库管理程序数据库管理程序),默认值是,默认值是MSDASQL(Mi

14、crosotODBC For OLEDB)State读取当前链接对象的状态,取读取当前链接对象的状态,取0表示关闭,表示关闭,1表示打开表示打开 Connection Connection对象的常用方法见表对象的常用方法见表3 3。表表3 Connection3 Connection对象的方法及描述对象的方法及描述方法方法意义描述意义描述Open建立一个与数据源的连接对象建立一个与数据源的连接对象Close关闭与数据源的连接,并且释放与连接有关的系统资源关闭与数据源的连接,并且释放与连接有关的系统资源Execute执行执行SQL命令或存储过程,以实现与数据库的通讯命令或存储过程,以实现与数据库

15、的通讯BeginTrans开始一个新的事务,即在内存中为事务开辟一片内存缓冲区开始一个新的事务,即在内存中为事务开辟一片内存缓冲区CommitTrans提交事务,即把一次事务中所有变动的数据从内存缓冲区一次提交事务,即把一次事务中所有变动的数据从内存缓冲区一次性地写入硬盘,结束当前事务并可能开始一个新的事务性地写入硬盘,结束当前事务并可能开始一个新的事务RollbackTrans回滚事务,即取消开始此次事务以来对数据源的所有操作,并回滚事务,即取消开始此次事务以来对数据源的所有操作,并结束本次事务操作结束本次事务操作 下面对部分方法进行详细说明。下面对部分方法进行详细说明。 Open Open

16、方法:建立一个与数据源的连接对象,打开方法:建立一个与数据源的连接对象,打开与数据源的连接。其语法格式为:与数据源的连接。其语法格式为:Connobject.Open(connectionstring,UserId, Password)Connobject.Open(connectionstring,UserId, Password) 其中:其中:ConnectstringConnectstring为可选参数,它是一个字符串为可选参数,它是一个字符串变量,包含链接的信息。用法参见变量,包含链接的信息。用法参见ConectionstringConectionstring属性。属性。 UserId

17、UserId为可选参数,它是一个字符串变量,包含建立为可选参数,它是一个字符串变量,包含建立连接时访问数据库使用的用户名称。连接时访问数据库使用的用户名称。 PasswordPassword为可选参数,它是一个字符串变量,包含建为可选参数,它是一个字符串变量,包含建立连接时访问数据库使用的密码。立连接时访问数据库使用的密码。 Close Close方法:关闭与数据源的连接,并且释放方法:关闭与数据源的连接,并且释放与连接有关的系统资源。其语法格式为:与连接有关的系统资源。其语法格式为:Connobject.closeConnobject.close 其中:其中:ConnobjectConnob

18、ject为已经创建的为已经创建的ConnectionConnection对象。对象。 使用使用CloseClose方法关闭方法关闭ConnectionConnection对象,但没有从对象,但没有从内存中删除该对象。因此一个关闭的内存中删除该对象。因此一个关闭的connectionconnection对象对象还 可 以 用还 可 以 用 o p e no p e n 方 法 打 开 而 不 必 再 次 创 建 一 个方 法 打 开 而 不 必 再 次 创 建 一 个connectionconnection对象。此外,在使用对象。此外,在使用closeclose方法关闭连接方法关闭连接时,也将关

19、闭以此连接相关的所有活动的时,也将关闭以此连接相关的所有活动的recoordsetrecoordset对象。对象。 Execute Execute方法:执行方法:执行SQLSQL命令或存储过程,以命令或存储过程,以实现与数据库的通讯。其语法为:实现与数据库的通讯。其语法为: 有返回记录的格式:有返回记录的格式:pRspRs = Connobject.Execute(CommandText = Connobject.Execute(CommandText, , ReccordAffected ReccordAffected, Options), Options) 无返回记录的格式:无返回记录的格

20、式:Connobject.Execute CommandTextConnobject.Execute CommandText, , ReccordAffected ReccordAffected, Options, Options 其中:其中:pRspRs为创建的为创建的RecordsedRecordsed对象;对象;ConnobjectConnobject为已经创建的为已经创建的ConnectionConnection对象。对象。 CommandTypeCommandType是一个字符串,它包含一个表名,是一个字符串,它包含一个表名,或某个将被执行的或某个将被执行的SQLSQL语句;语句;R

21、eccordAffectedReccordAffected为可选为可选参数,返回此次操作所影响的记录数。参数,返回此次操作所影响的记录数。OptionsOptions为可为可选参数,用来指定参数的选参数,用来指定参数的CommandTextCommandText参数的性质,参数的性质,即用来指定即用来指定ADOADO如何解释如何解释CommandTextCommandText参数的参数值,参数的参数值,其取值与意义见表其取值与意义见表4 4。表表4 Options4 Options参数的取值及意义参数的取值及意义值值意义描述意义描述1表示被执行的字符串包含一个命令文本表示被执行的字符串包含一个

22、命令文本2表示被执行的字符串包含一个表名表示被执行的字符串包含一个表名4表示被执行的字符串包含一个存储过程名表示被执行的字符串包含一个存储过程名8没有指定字符串的内容没有指定字符串的内容(这是默认值这是默认值)例:Demo5、6_13. Command对象 Command对象用来定义数据库的查询动作,这个查询一般采用SQL语句,大部分数据库都会支持SQL语言解释。通过和SQL Server的查询及存储过程的良好结合,Command对象有更强大的数据库访问能力,无论是对数据库的插入、更新和删除这类无需返回结果集的操作,还是对Select查询这样需返回结果集的操作都一样简单。 Command Co

23、mmand对象的常用属性见表对象的常用属性见表5 5。表表5 Command5 Command对象的属性对象的属性属性属性意义描述意义描述ActiveConnection定义了定义了Command对象的连接信息,用来指定当前的对象的连接信息,用来指定当前的Command对象的操作对象是哪个对象的操作对象是哪个Connection对象对象CommandText定义传送给数据提供者的命令文本。它被用来设定或返回一定义传送给数据提供者的命令文本。它被用来设定或返回一个字符串,该字符串包含一个个字符串,该字符串包含一个SQL命令、一个表名或一个存命令、一个表名或一个存储过程名。默认值为空字符串储过程名

24、。默认值为空字符串CommandType指示指示CommandTem属性中设定的属性中设定的“命令字符串命令字符串”的类型的类型CommandTimeout用来设定等候运行一条命令的最长等待时间,超过该时间命用来设定等候运行一条命令的最长等待时间,超过该时间命令对象中止并产生一个错误。设定为令对象中止并产生一个错误。设定为0时表示无限期等待时表示无限期等待Name用来设置和读取一个用来设置和读取一个Command对象的名字对象的名字Prepared该属性指示在命令被执行前是否要用命令创建一个预备语句该属性指示在命令被执行前是否要用命令创建一个预备语句State用来设置或读取当前用来设置或读取当

25、前Command对象的状态是打开的或关闭对象的状态是打开的或关闭的的 说明:说明:CommandTypeCommandType属性指示属性指示CammandTextCammandText属性中属性中设定的设定的“命令字符串命令字符串”的类型,即用来指的类型,即用来指ADOADO如何解如何解释释CammandTextCammandText参数的参数值,它的取值与意义与表参数的参数值,它的取值与意义与表4 4中中OptionsOptions参数的取值及意义相同。参数的取值及意义相同。 CommandCommand对象的常用方法有对象的常用方法有ExecuteExecute方法,用来运方法,用来运行

26、行CommandTextCommandText属性所设定的属性所设定的SQLSQL查询、查询、SQLSQL说明命令说明命令或存储过程,以实现与数据库的通讯。其语法为:或存储过程,以实现与数据库的通讯。其语法为: 有返回记录的格式:有返回记录的格式:_RecordsetPtr pRs = pCmd-Execute(NULL, NULL, adCmdText);例:Demo9、11其中:其中:pRspRs为创建的为创建的RecordsedRecordsed对象;对象;pCmdpCmd为已经创建为已经创建的的CommandCommand对象。对象。 RecordAfiectedRecordAfiec

27、ted为可选参数,返回此次操作所影为可选参数,返回此次操作所影响的记录数。响的记录数。ParametersParameters为可选参数,表示一个为可选参数,表示一个SQLSQL语句的参数集合。语句的参数集合。OptionsOptions为可选参数,用来指定为可选参数,用来指定ADOADO如何解释如何解释CommandTextCommandText参数的参数值,它的取值与意参数的参数值,它的取值与意义与表义与表4 4中中OptionsOptions参数的取值及意义相同。参数的取值及意义相同。4. Recordset4. Recordset对象对象 RecordsetRecordset对象对应着

28、对象对应着CommandCommand对象的查询返回结对象的查询返回结果,或者是直接建立的一个带查询的结果集。它把从果,或者是直接建立的一个带查询的结果集。它把从数据库内查询到的结果封装在一起,并提供简单快捷数据库内查询到的结果封装在一起,并提供简单快捷的方式去访问每一条记录内每一字段的数据的方式去访问每一条记录内每一字段的数据. . RecordsetRecordset对象实际上是依附于对象实际上是依附于ConnectionConnection对象对象和和CommandCommand对象之上的。通过建立及开启一个对象之上的。通过建立及开启一个ConnectionConnection对象,可以

29、与我们关心的数据库建立连线;对象,可以与我们关心的数据库建立连线;通过使用通过使用CommandCommand对象,则可以告诉数据库我们想要做对象,则可以告诉数据库我们想要做什么:是插入一条记录,还是查找符合条件的记录;什么:是插入一条记录,还是查找符合条件的记录;通过使用通过使用RecordsetRecordset对象,则可以方便自如地操作对象,则可以方便自如地操作CommandCommand对象返回的结果。这三个对象中的每对象返回的结果。这三个对象中的每个都是个都是必要的,缺一不可。必要的,缺一不可。 (1) Recordset(1) Recordset对象的属性对象的属性 Records

30、etRecordset对象的常用属性见表对象的常用属性见表6 6。表表6 6 Recordset Recordset对象的常用属性对象的常用属性属性属性意义描述意义描述ActiveConnection定义了与数据提供者的连接信息,用来指定当前的定义了与数据提供者的连接信息,用来指定当前的RecordSet对象属于哪个对象属于哪个Connection对象对象Source指示指示RecordSet对象的数据源,可以是一个对象的数据源,可以是一个command对象名、对象名、SQL语句、数据库表或存储过程语句、数据库表或存储过程CursorType指定指定RecordSet对象所使用的光标类型对象所

31、使用的光标类型LockType表示编辑时记录的锁定类型表示编辑时记录的锁定类型Filter用来设定一个过滤条件,以便对用来设定一个过滤条件,以便对RecordSet记录进行过滤记录进行过滤CacheSize表示一个表示一个RecordSet对象在高速缓存中的记录数对象在高速缓存中的记录数Maxrecords执行一个执行一个SQL查询时,返回查询时,返回RecordSet对象的最大记录数对象的最大记录数Bof判断记录指针是否到了第一条记录之前判断记录指针是否到了第一条记录之前Eof判断记录指针是否到了最后一条记录之后判断记录指针是否到了最后一条记录之后RecordCount 返回返回Record

32、Set对象的记录数对象的记录数(在使用键盘光标时,该属性返在使用键盘光标时,该属性返回的可能是不太准确的数值;一般情况下,并不用这种方法回的可能是不太准确的数值;一般情况下,并不用这种方法来统计来统计RecordSet中的记录数,因为它的性能并不稳定中的记录数,因为它的性能并不稳定)Bookmark书签标记,用来保存存当前记录的位置书签标记,用来保存存当前记录的位置AbsolutePosition用来设定用来设定RecordSet对象中当前记录的顺序位置是第几行记对象中当前记录的顺序位置是第几行记录录PageSize表示表示RecordSet对象的页面大小对象的页面大小(每页多少条记录每页多少

33、条记录),默认值为,默认值为10PageCount表示表示RecordSet对象的页面个数对象的页面个数AbsolutePage表示当前记录的页号表示当前记录的页号EditMode指示当前记录的编辑状态,指示当前记录的编辑状态,0 已被编辑;已被编辑;1 已被修改而未已被修改而未提交;提交;2 存入数据库的新记录存入数据库的新记录Status对对RecordSet对象进行批量更新后,查询当前记录的状态对象进行批量更新后,查询当前记录的状态 说明:说明: CursorTypeCursorType属性指定属性指定RecordSetRecordSet对象所使用的光标类型。对象所使用的光标类型。不同的

34、光标类型决定了对不同的光标类型决定了对RecordSetRecordSet所能做的操作。所能做的操作。共有四种光标类型:共有四种光标类型:0 - 0 - 前滚光标前滚光标(ForwardOnlyCursor(ForwardOnlyCursor),),光标只能向前移动,执行光标只能向前移动,执行效效率高,是率高,是CursorCursor的默认值;的默认值;1 - 1 - 键盘光标键盘光标(KeysetCursor(KeysetCursor) ),光标可向前向后移动,光标可向前向后移动,RecordSetRecordSet记录集同步反映自它创建后其他用户所作的记录集同步反映自它创建后其他用户所作

35、的修改和删除,但却不能同步反映自它创建后其他用户新修改和删除,但却不能同步反映自它创建后其他用户新增加的记录;增加的记录;2 - 2 - 动态光标动态光标(DynamicCursor(DynamicCursor) ),光标可向前向后移动,任何时,光标可向前向后移动,任何时候候RecordSetRecordSet记录集都同步反映其他用户的任何操作;记录集都同步反映其他用户的任何操作;3 - 3 - 静态光标静态光标(StaticCursor(StaticCursor) ),光标可向前向后移动,自创建,光标可向前向后移动,自创建后后无法同步反映其他用户所做的任何操作,它的功能简单无法同步反映其他用

36、户所做的任何操作,它的功能简单但消耗资源少。但消耗资源少。 LockTypeLockType属性表示编辑时记录的锁定类型。属性表示编辑时记录的锁定类型。它决定了当不止一个用户试图同时改变一个记录时,它决定了当不止一个用户试图同时改变一个记录时,RecordSetRecordSet如何处理数据记录。如何处理数据记录。它的取值有:它的取值有:0 - 0 - 只读锁定,记录只读,不能更新只读锁定,记录只读,不能更新RecordSetRecordSet,为,为LockTypeLockType的默认值;的默认值;1 - 1 - 悲观锁定,编辑记录开始立刻锁定,直到提交给悲观锁定,编辑记录开始立刻锁定,直

37、到提交给数据提供者;数据提供者;2 - 2 - 乐观锁定,一次锁定一条记录,只有调用乐观锁定,一次锁定一条记录,只有调用UpdateUpdate方法提交数据时才锁定记录;方法提交数据时才锁定记录;3 - 3 - 乐观的批量更新,允许同时更新多条记录。乐观的批量更新,允许同时更新多条记录。 Filter Filter属性用来设定一个过滤条件,以便对属性用来设定一个过滤条件,以便对RecordSetRecordSet记录进行过滤。使用的优点是可以在已经记录进行过滤。使用的优点是可以在已经存在的存在的RecordSetRecordSet对象上进一步过滤出所需的记录。对象上进一步过滤出所需的记录。但这

38、种方式增加了系统的开销。它有两种使用方式:但这种方式增加了系统的开销。它有两种使用方式: 方式方式1 1:使用关系表达式,例如:使用关系表达式,例如:Rs.Filter = bhRs.Filter = bh 30 30 其中其中RsRs是已经创建的是已经创建的RecordSetRecordSet对象;对象;bhbh是是RecordSetRecordSet对象的字段(数值型)。对象的字段(数值型)。 方式方式2 2:使用准则常量:使用准则常量:0 - 0 - 清除以前的清除以前的FilterFilter,允许看见所有记录;允许看见所有记录;1 - 1 - 只允许查看已修改但未提交只允许查看已修改

39、但未提交的记录;的记录;2 - 2 - 允许查看最后删除、允许查看最后删除、ResyncResync、批量更新、批量更新、或删除批量方式所影响的记录;或删除批量方式所影响的记录;3 - 3 - 允许查看数据库允许查看数据库最后读取结果的数据。例如:最后读取结果的数据。例如:Rs.FilterRs.Filter = 1 = 1 可以实现更新整个批量记录之前只显示用户修改可以实现更新整个批量记录之前只显示用户修改的记录,使用户在提交数据之前能够进行检查。的记录,使用户在提交数据之前能够进行检查。 BookMarkBookMark属性用来存储当前记录的位置。并属性用来存储当前记录的位置。并非每一个数

40、据提供者都支持这个属性。当创建一个允非每一个数据提供者都支持这个属性。当创建一个允许使用许使用BookMarkBookMark属性的属性的RecordSetRecordSet对象时,给每个记对象时,给每个记录都标上一个独一无二的录都标上一个独一无二的BookMarkBookMark,利用,利用BookMarkBookMark可可以返回访问过的记录。以返回访问过的记录。 Status Status属性对于多用户连接管理特别有用,属性对于多用户连接管理特别有用,通过该属性可以看出更新记录的失败原因。它的返回通过该属性可以看出更新记录的失败原因。它的返回值和意义如表值和意义如表7 7所示。所示。表表

41、7 Status7 Status属性的值和意义属性的值和意义值值意义描述意义描述值值意义描述意义描述0记录更新成功记录更新成功1024存在记录锁定,新记录未保存存在记录锁定,新记录未保存l新纪录新纪录2048使用乐观并发事件,未保存使用乐观并发事件,未保存2记录被修改记录被修改4096用户违反完整性规则,未保存用户违反完整性规则,未保存4记录被删除记录被删除8192很多待定修改,记录未保存很多待定修改,记录未保存8记录未被修改记录未被修改16384与一存储对象相冲突,未保存与一存储对象相冲突,未保存16书签不合法,记录未保存书签不合法,记录未保存32768内存不够,记录未保存内存不够,记录未保

42、存64影响多个记录,未保存影响多个记录,未保存65536用户没有足够权限,未保存用户没有足够权限,未保存128指向一待定插入,记录未保指向一待定插入,记录未保存存131072违反基本数据库原理,未保存违反基本数据库原理,未保存256操作被取消,记录未保存操作被取消,记录未保存262144记录已从数据源删除记录已从数据源删除 (2) RecordSet(2) RecordSet对象的方法对象的方法 RecordSetRecordSet对象的方法及意义见表对象的方法及意义见表8 8。表表8 8 RecordSet RecordSet对象的方法及意义对象的方法及意义方法方法意义描述意义描述Open打

43、开一个打开一个RecordSet对象对象Close关闭一个关闭一个RecordSet对象并释放相关的资源对象并释放相关的资源Clone创建一个创建一个RecordSet对象的完全拷贝,但只有所用的对象的完全拷贝,但只有所用的RecordSet对象类型允许使用对象类型允许使用BookMarks时才能使用该方法时才能使用该方法MoveFirst把把RecordSet指针指向第一行记录指针指向第一行记录MoveLast把把RecordSet指针指向最后一条记录指针指向最后一条记录(该该RecordSet必须支持书必须支持书签签)MovePrevious把把RecordSet指针上移一行指针上移一行(

44、使用前应判断使用前应判断BOF是否为真;该是否为真;该RecordSet必须支持书签必须支持书签)Movenext把把RecordSet指针下移一行指针下移一行(使用前应判断使用前应判断EOF是否为真是否为真)Move把把RecordSet指针指向指定的记录指针指向指定的记录GetPows从一个从一个RecordSet对象读取一行或多行记录到一个数组中对象读取一行或多行记录到一个数组中NextRecordSet清除当前的清除当前的RecordSet并执行下一条指令,以传回下一个并执行下一条指令,以传回下一个RecordSet对象,如果没有下一条指令则返回对象,如果没有下一条指令则返回Nothi

45、ng给给RecordSetRequery重新执行的重新执行的SQL查询操作,以更新查询操作,以更新RecordSet对象中的数据对象中的数据Resync从数据源更新当前的从数据源更新当前的RecordSet记录,实现与数据源的同步记录,实现与数据源的同步Addnew增加一条空纪录增加一条空纪录Delete删除当前记录删除当前记录Update保存当前记录的任何变动保存当前记录的任何变动CancelUpdate取消前一个取消前一个Update方法所做的一切修改方法所做的一切修改UpdateBatchRecordSet工作在批量方式时,取消对工作在批量方式时,取消对RecordSet的更新的更新Su

46、ports获取创建的获取创建的RecordSet对象的能力信息对象的能力信息 说明:说明: Open Open方法:打开一个方法:打开一个RecordSetRecordSet对象。其语法对象。其语法格式为:格式为:Rs.OpenSource, ActiveConnectionRs.OpenSource, ActiveConnection , CursorType, LockType, CursorType, LockType, Option, Option例:Demo1_1 其中:其中:RsRs为已经创建的为已经创建的RecordSetRecordSet对象;对象;SourceSource为可

47、选参数,可以是一个为可选参数,可以是一个CommandCommand对象名、对象名、SQLSQL字符串字符串存储过程或数据库的表名;存储过程或数据库的表名;ActiveConnectionActiveConnection参见参见ActiveConnectionActiveConnection属性;属性;CursorTypeCursorType是是RecordSetRecordSet对对象所使用的光标类型,用法参见象所使用的光标类型,用法参见CursorTypeCursorType属性;属性;LockTypecLockTypec是编辑是编辑RecordSetRecordSet对象记录时所使用的锁

48、定对象记录时所使用的锁定类型,用法参见类型,用法参见LockTypeLockType属性;属性;OptionsOptions指示数据提指示数据提供者如何处理供者如何处理SourceSource的内容类型,它的取值与意义见的内容类型,它的取值与意义见表表4 4。 使用使用CloseClose方法关闭方法关闭RecordSetRecordSet对象,并不从对象,并不从内存中删除该对象,只是无法读取其中的数据,但仍内存中删除该对象,只是无法读取其中的数据,但仍然可以读取它的属性。因此一个关闭的然可以读取它的属性。因此一个关闭的ReccordSetReccordSet对对象还可以用象还可以用OpenO

49、pen方法打开并保持其原有属性。如果正方法打开并保持其原有属性。如果正在进行编辑更新数据的操作,在调用在进行编辑更新数据的操作,在调用CloseClose方法前必方法前必须先调用须先调用UpdateUpdate或或CancelUpdateCancelUpdate方法,否则将会出现方法,否则将会出现错误。如果以批量模式更新数据记录错误。如果以批量模式更新数据记录(Reccordset(Reccordset的的LockTypeLockType属性设为属性设为3)3),那么对缓冲区数据的修改将全,那么对缓冲区数据的修改将全部丢失。另外,使用部丢失。另外,使用CloneClone方法复制一个已经打开的

50、方法复制一个已经打开的RecordSetRecordSet对象,调用对象,调用CloseClose方法不影响任何复制的方法不影响任何复制的RecordSetRecordSet对象。对象。 Move Move方法用于把记录指针指向指定的记录。方法用于把记录指针指向指定的记录。其语法格式为:其语法格式为:Move n , startMove n , start 其中其中n n为要移动的记录数,取正时表示向前为要移动的记录数,取正时表示向前( (下下) )移动,取负时表示向后移动,取负时表示向后( (上上) )移动;移动;startstart是可选参数,是可选参数,表示移动的起点。表示移动的起点。

51、使用使用MoveMove、MoveFirstMoveFirst、MoveLastMoveLast、MovePreviousMovePrevious、MoveNextMoveNext方法移动记录指针时,需要方法移动记录指针时,需要注意注意RecordSetRecordSet对象的光标类型。如对象的光标类型。如“前滚光标前滚光标”限限制了记录指针只能向前移动。制了记录指针只能向前移动。例Demo8_1 GetRowsGetRows方法从一个方法从一个RecordSetRecordSet对象读取一行对象读取一行或多行记录到一个数组中,一般用来读取大量的数据。或多行记录到一个数组中,一般用来读取大量的

52、数据。其语法格式为:其语法格式为:Myarray = Rs.GetRows(rowsMyarray = Rs.GetRows(rows, start, fields), start, fields) 其中其中MyarrayMyarray为目标数组名;为目标数组名;RsRs为已经创建的为已经创建的RecordSetRecordSet对象;对象;RowsRows为返回数组的行数;为返回数组的行数;startstart为读为读取数据的起点取数据的起点( (书签书签) );FieldsFields为为RecordSetRecordSet的字段。的字段。 AddNewAddNew方法用于增加一条空纪录。

53、调用该方方法用于增加一条空纪录。调用该方法时在法时在RecordSetRecordSet对象中增加一个新行,并将指针移对象中增加一个新行,并将指针移到行首以准备保存新数据。该方法一般和到行首以准备保存新数据。该方法一般和UpdateUpdate方法方法相搭配共同完成数据更新的任务。不过这种方法很消相搭配共同完成数据更新的任务。不过这种方法很消耗资源、效率最低,最好用耗资源、效率最低,最好用SQLSQL语句来实现数据更新。语句来实现数据更新。 Delete Delete方法用于删除当前记录。当方法用于删除当前记录。当RecordSetRecordSet工作在批量方式时,可实现批量删除。不过该方法

54、非工作在批量方式时,可实现批量删除。不过该方法非常消耗系统资源,效率非常低。其语法格式为:常消耗系统资源,效率非常低。其语法格式为:Delete valueDelete value 其中其中value = 1value = 1(默认值)表示该方法只删除当(默认值)表示该方法只删除当前记录;前记录;value = 2value = 2表示该方法删除所有由表示该方法删除所有由FilterFilter属属性设定的记录。性设定的记录。例Demo4_1 MFC访问数据库 1. 连接到数据源 2. 使用Recordset对象处理结果1. 连接到数据源 (1) 创建连接字符串 创建Web数据应用程序的第一步

55、是为ADO提供一种定位并标识数据源的方法。这一步通过“连接字符串”实现。连接字符串是一系列用分号分隔的参数,用于定义诸如数据源提供程序和数据源位置等参数。ADO使用连接字符串标识OLE DB提供程序并将提供程序指向数据源。提供程序是一个组件,用来描述数据源并以行集合的形式将信息展示给应用程序。 表表9 9列出了几种通用数据源的列出了几种通用数据源的OLE DBOLE DB连接字符串。连接字符串。表表9 9 常用的通用数据源的常用的通用数据源的OLE DBOLE DB连接字符串连接字符串数据源数据源OLE DB连接字符串连接字符串Microsoft AccessProvider=Microsof

56、t.Jet.OLEDB.4.0;Source=指向指向.mdb文件文件的物理路径的物理路径Microsoft SQL ServerProvider=SQLOLEDB.1;Source=指向服务器上数据库的路指向服务器上数据库的路径径OracleProvider=MSDAORA.1;Source=指向服务器上数据库的路指向服务器上数据库的路径径Microsoft Indexing ServiceProvider=MSIDXS.1;Source=指向文件的路径指向文件的路径 为了向后兼容性,为了向后兼容性,ODBCODBC的的OLE DBOLE DB提供程序支持提供程序支持ODBCODBC连接字符

57、串语法。表连接字符串语法。表1010列出了常用的列出了常用的ODBCODBC连接字连接字符串。符串。表表10 10 常用的常用的ODBCODBC连接字符串连接字符串数据源驱动程序数据源驱动程序ODBC连接字符串连接字符串Microsoft AccessDriver=Microsoft Access Driver (*.mdb);DBQ=指向指向.mdb文件的物理路径文件的物理路径SQL ServerrDriver=SQL Server;SERVER=指向服务器的路径指向服务器的路径OracleDriver=Microsoft ODBC for Oracle;SERVER=指向服务指向服务器的路

58、径器的路径Microsoft ExcelDriver=Microsoft Excel Driver (*.xls);DBQ=指向指向.xls文件文件的物理路径的物理路径; DriverID =278Microsoft Excel 97Driver=Microsoft Excel Driver (*.xls);DBQ=指向指向.xls文件文件的物理路径的物理路径;DriverID=790ParadoxDriver=Microsoft Paradox Driver (*.db);DBQ=指向指向.db文文件的物理路径件的物理路径; DriverID=26文本文本Driver=Microsoft T

59、ext Driver (*.txt;*.csv); DefaultDir=指指向向.txt文件的物理路径文件的物理路径Microsoft Visual FoxPro(带有一(带有一个数据库容器)个数据库容器)Driver=Microsoft Visual FoxPro Driver;SourceType=DBC;SourceDb=指向指向.dbc文件的物理文件的物理路径路径Microsoft Visual FoxPro(不带数(不带数据库容器)据库容器)Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDb=指向指向.dbf文

60、件的物理文件的物理路径路径 (2) (2) 连接到数据源连接到数据源 ADOADO提供的提供的ConnectionConnection对象,用于建立和管理应对象,用于建立和管理应用程序与用程序与OLE DBOLE DB兼容数据源或兼容数据源或ODBCODBC兼容数据库之间的兼容数据库之间的连接。连接。ConnectionConnection对象的属性和方法可以用来打开和对象的属性和方法可以用来打开和关闭数据库连接,并发布对更新信息的查询。关闭数据库连接,并发布对更新信息的查询。 要建立数据库连接,首先必须创建要建立数据库连接,首先必须创建ConnectionConnection对对象实例。下述

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论