使用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方法。
- 本地使用RecordSet 对象
- 使用Recordset对象
- Recordset对象
- Recordset对象
- Recordset对象
- Recordset 对象
- Recordset对象
- Recordset对象
- Recordset对象方法
- Recordset对象方法
- Recordset对象方法详解
- recordset中的getrows对象
- Recordset对象方法
- ADO.Recordset对象方法
- Recordset对象方法
- recordset对象的游标
- VB Recordset 对象
- asp Recordset 对象
- PHP知识积累
- Android TTS学习(补充)--我能说中文
- 主备切换之State模式实现
- POJ 1087:A Plug for UNIX(最大流)
- PHP输出99乘法表
- 使用Recordset对象
- 设计模式 笔记
- [笔记] 用C++通过JavaVM调用jar包
- ssis用法
- 关于加入了拦截器后无法Action无法获得值的问题
- 大哥们能帮帮我解释一下这是什么意思
- 大哥们能帮帮我解释一下这是什么意思
- 大哥们能帮帮我解释一下这是什么意思
- 宋成龙:巨人打造微博客服 为玩家排忧解难