ADO数据库编程入门.....................................................................................................................3使用ADO编程时可以采用以下三种方法之一:................................................................31、使用预处理指令#import....................................................................................................42、使用MFC中的CIDispatchDriver.....................................................................................43、直接用COM提供的API..................................................................................................4二、使用#import方法的编程步骤.........................................................................................41、添加#import指令.....................................................................................................42、定义_ConnectionPtr型变量,并建立数据库连接...................................................43、定义_RecordsetPtr型变量,并打开数据集.............................................................54、读取当前记录的数据.................................................................................................65、修改数据.....................................................................................................................76、添加记录.....................................................................................................................77、删除记录.....................................................................................................................98、使用带参数的命令.....................................................................................................99、响应ADO的通知事件............................................................................................1110、绑定数据.................................................................................................................1311.访问长数据..............................................................................................................1512.使用SafeArray问题...............................................................................................1613.使用书签(bookmark).............................................................................................1814、设置过滤条件.........................................................................................................1815、索引与排序.............................................................................................................1916、事务处理.................................................................................................................19使用SAFEARRAY.......................................................................................................................23SAFEARRAY与SAFEARRAYBOUND....................................................................................26VARIANT指针的用法(SAFEARRAY,SAFEARRAYCREAT(),SAFEARRAYBOUND)30对VARIANT变量的赋值可参考《VARIANT和BSTR这两种类型是COM中使用的数据类型.doc》..........................................................................................................................................31对于VARIANT变量的赋值方法:首先给vt成员赋值,指明数据类型,.....................31ADO(ActiveXDataObject,AxtiveX数据对象)是目前在Windows环境中比较流行的客户端数据库编程技术。ADO主要有三个对象。Connection对象连接对象表示到数据源的连接,同时也表示与数据源的惟一会话。在使用ADO操作数据库前,必须首先创建一个连接对象。Command对象命令对象用于定义对数据源执行的特定命令,主要用于查询数据库,并返回Recordset对象中的记录,以便大量操作,或对数据库结构进行操行。Recordset对象记录集表示基本表,或者表示命令执行结果的记录全集。需要注意的是,Recordset对象的当前记录是集合中的单个记录。采用ADO时,可以使用Recordset对象操作来自提供者的数据,也可以使用Recordset对象对数据库中的所有数据进行操作。结构上,所有的Recordset对象均由记录(行)和字段(列)组成。其他对象:4,Field对象每个Field对象都对应Recordset中的一列。使用Field对象的Value属性可以设置或返回当前记录的数据。ADO接口简介ADO技术是基于OLEDB的访问接口,而后者又是基于COM接口的技术,对于这种特殊的关系,MFC并没有提供对ADO操作的支持类,但是通过一些特殊的ADO支持类可以很方便地使用ADO对象,而_com_ptr_t就是其中的中一个。ADO库中包含的三个基本接口为_ConnectionPtr接口,_CommandPtr接口和_RecordsetPtr接口,接下来对它们分别加以简要介绍。1,_ConnectionPtr接口该接口返回一个记录集或一个空指针。通常用它来创建一个数据连接,或执行一条不返回任何结果的SQL语句,如一个存储过程。不推荐使用_ConnectionPtr接口返回一个记录集,对于要返回记录的操作通常用_RecordsetPtr来实现,而且使用_ConnectionPtr时要想得到记录数目必须遍历所有记录,但使用_RecordsetPtr。2,_CommandPtr接口该接口返回一个记录集。它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。在使用_CommandPtr接口时,可以利用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用连接串.如果只执行一次或几次数据访问操作,后者是比较好的选择.但如果要频繁访问数据库,并要返回很多记录集,那么应该使用全局_ConnectionPtr接口创建一个数据连接,然后使用_CommandPtr接口执行存储过程和SQL语句.3,_RecordsetPtr该接口是一个记录集对象.与前面两种对象相比,它对记录集提供了更多的控制功能,如记录锁定,游标控制等.同_CommandPtr接口一样,它不一定要使用一个已经创建的数据连接,可以用一个连接串代替连接指针赋给_RecordsetPtr的connection成员变量,让它自己创建数据连接。如果要使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局_ConnectionPtr接口,然后使用_RecordsetPtr执行存储过程和SQL语句.1,创建记录集_RecordsetPtr[name]2,打开记录集[指针name]-Open(_variant_t(表名),_variant_t((IDispatch*)m_pConnection,true),adOpenKeyset,adLockOptimistic,adCmdTable);3,遍历记录集Move将记录集指针移动到指定的记录MoveFirst将记录集指针移动到第一条记录MoveLast将记录集指针移动到最后一条记录MoveNext将记录集指针移动到下一条记录MovePrev将记录集指针移动到前一条记录4,访问记录集有三种方法获得字段值1)[name]-GetItem(index)-Value//在记录集类中没有找到GetItem函数[name]-GetItem(index)-Value2)[name]-GetField()-GetItem(index)-Value//先获得Fields集合类指针,再使用Fields类的GetItem函数获取对应某索引的值[name]-GetField()-Item(index)-Value3)[name]-GetCollect(字段名)函数原型:_variant_tRecordset15::GetCollect(const_variant_t&Index)***index和取得的值都是_variant_t,必须经过类型转换,转换成我们需要的类型设置字段值4)[name]-PutCollect(字段名,新值)函数原