使用Recordset对象

来源:互联网 发布:淘宝有运费险退货流程 编辑:程序博客网 时间:2024/05/29 03:36

在使用Recordset对象前,假定已经成功建立了数据源的连接,连接指针为m_pConnection。
    1.创建记录集
    使用_RecordsetPtr接口创建记录集的方法非常简单。
    (1)声明ADO记录集指针如下:
    _RecordsetPtr m_pRecordset;
    (2)调用_RecordsetPtr接口的记录集创建函数CreateInstance,具体如下:
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    (3)至此,记录指针已经创建完毕,然后就可以用SQL语句打开记录集进行数据库操作了。

    2.打开记录集
    记录集指针创建完毕以后,可以调用指针的一个方法Open完成记录集的打开。该函数的声明如下:
    HRESULT Recordset15::Open(const _variant_t &Source,
                                                     const _variant_t &ActiveConnection,
                                                     enum CursorTypeEnum CursorType,
                                                     enum LockTypeEnum LockType,
                                                     long Optioins);
    各个参数含义如下:
    ~Source:为_variant_t类型的引用,可以为有效的Command对象、SQL语句、表名、存储过程调用、URL或包含持久存储Recordset的文件名或Stream对象等。
    ~ActiveConnection:为_variant_t类型的引用,已经建立好的连接。
    ~CursorType:用于设置在打开Recordset时提供者应使用的游标类型,它可取CurorTypeEnum中任一值,默认值为adOpenForwardOnly,其他可选值如下:
                                                                            游标类型
   adOpenStatic                              静态游标,为记录集产生静态备份,但其他用户所做的添加、更改或删除不可见
   adOpenForwardOnly                  仅向前游标,为默认值。除了在记录中只能向前滚动外,与静态游标相同,当只                                                      需要在记录集中进行一个传递时,用它可以提高性能。
   adOpenDynamic                         动态游标,其他用户所作的添加、修改或删除均可见,而且允许记录集中的所有                                                       移动类型(如果提供者不支持书签,则书签除外)
   adOpenKeyset                            键集游标,不能访问其他用户删除、添加的记录,但可以访问其他用户对原有数                                                       据所作的修改
   adOpenUnspecified                    不指定游标
    ~LockType:用于设置在打开Recordset时提供者应使用的锁(并发)类型,它可取枚举LockTypeEnum中任一    值,默认为adLockReadOnly,其他参数如下:
                                                                           锁定类型
adLockUnspecified                        未指定
adLockReadOnly                            只读记录集
adLockPessimistic                           悲观锁定,数据更新时锁定其他所有动作
adLockOptimistic                            乐观锁定,仅在调用Update方法时锁定记录
adLockBatchOptimistic                    乐观批更新。需要批更新模式支持
    ~Options:用于设置获取Source的方式,其类型为long。

3.遍历记录集
    记录集指针接口提供了几个用于实现遍历的方法,如下:
    Move                                将记录集移动到指定的记录
    MoveFirst                         将记录集指针移动到第一条记录
    MoveLast                          将记录集指针移动到最后一条记录
    MoveNext                         将记录集指针移动到下一条记录
    MovePrev                         将记录集指针移动到前一条记录
    类似地,为避免发生异常,一般在使用MoveFirst、MovePre之前,需要使用记录集指针的BOF属性来检测当前的记录集指针是否在第一条记录之前;在使用MoveLast、MoveNext之前需要使用记录集指针的EOF属性来检测当前的记录集指针是否位于最后一条记录之后。

4.记录集定位
    记录集指针接口类也提供了2中定位方法,书签定位和绝对定位。前者通过设置或者获取AbsolutePosition属性即可,它的值从1开始,并且当前记录为记录集中第一条记录时等于1;对于后者可以通过设置或者获取Bookmark属性即可,他的作用和MFC ODBC的记录集类中的书签方法一样。

5.访问记录集字段
    ADO定义包括Fields、Parameters、Properties和Errors在内的若干集合。在Visual C++中,GetItem(index)方法返回集合的一个成员。index是一个Variant类型的值,它是集合中成员的数字索引,或者是包含成员名称的字符串。编译器伪指令将Item属性声明为每个集合的基本GetItem()方法的替换语法。替换语法使用方括号,看起来类似于数组引用。譬如如果m_pCollect是一个集合的接口指针,那么上述这种替换可以如下表示:
    m_pCollect->GetItem(index);
    m_pCollect->Item[index];

因此可以使用如下的方式获取字段值:
    m_pCollect->GetItem(index)->Value;
    m_pCollect->Item[index]->Value;
如果直接从记录集指针访问字段则可以:
    m_pRecordset->GetFields()->GetItem(index)->Value;
    m_pRecordset->Fields->Item[index]->value;
更简单一些的方法是直接使用如下的语句:
    m_pRecordset->GetCollect(字段名);
这种情况下可以使用如下方式设置字段值:
    m_pRecordset->PutCollect(字段名,字段值);

6.记录集更新
    更新记录集包括添加新的记录、编辑当前记录以及删除当前记录。记录集接口指针对这3种操作分别提供了相应的方法,即AddNew、Edit以及Delete等,同时也针对AddNew以及Edit方法提供了Update方法。 

原创粉丝点击