ADO方式操作数据库

  ADO连接SQL server的方式已经在前文MFC使用ADO连接SQL Server 中进行过描述,接下来主要讲讲如何操作数据库。

一、_RecordsetPtr介绍

_RecordsetPtr智能指针,它是专门为通过记录集操作数据库而设立的指针,通过该接口可以对数据库的表内的记录、字段等进行各种操作。
通过_RecordsetPtr实例化一个对象,m_pRecordset相当于数据库内容的备份,我们操作m_pRecordset中的内容,然后Update就能改变数据库中的内容。
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recorset));
打开记录集的方法:使用open函数
HRESULT Recordset15::Open(const _variant_t& Source,const _variant_t& ActiveConnection,enum CursorTypeEnum CursorType,enum LockTypeEnum LockType,long Options)
/*
参数:
Source是数据查询字符串。
ActiveConnection是已经建立好的连接(我们需要用Connection对象指针来构造一个_variant_t对象)。
CursorType 光标类型,它是枚举CursorTypeEnum中的一个值。
LockType 锁定类型 它是枚举LockTypeEnum中的一个值
Options 指定Source的类型
光标类型CursorType,可取如下值之一:
adOpenUnspecified=-1 不作特别指定
adOpenForwardOnly=0 默认值,前滚静态光标。这种光标只能向前浏览记录集,比如用MoveNext向前滚动,这种方式可节省资源,提高浏览速度,但诸如BookMark、 RecordCount、AbsolutePosition、AbsolutePage都不能使用。
adOpenKeyset=1 键集游标,采用这种光标的记录集看不到其它用户的新增、删除操作,但对于更新原有记录的操作对你是可见的。
adOpenDynamic=2 动态光标,所有数据库的操作都会立即在用户记录集上反应出来。
adOpenStatic=3 静态游标。它为记录产生一个静态备份,其他用户的新增、删除、更新操作对你的记录集来说是不可见的。

LockType锁定类型,它可以是以下值之一,请看如下枚举结构
enum LockTypeEnum
{
adLockUnspecified=-1,//未指定
adLockReadOnly=1,//只读记录集,默认值。无法更改数据。
adLockPessimistic=2,//悲观锁定方式。只有在调用Update方法时才锁定记录。这是最安全的锁定机制
adLockOptimistc=3,//乐观锁定方式,只有在你调用Update方法时才锁定记录。在此之前仍然可以做数据的更新、插入、删除等操作
adLockBatchOptimistic=4 乐观分批更新。编辑时记录不会锁定,更改、插入及删除是在批处理模式下完成。
}

关于光标和锁定类型,对于一般用户,建议您只作简单了解,后面将进一步进行解说。

Options可以取如下值之一:
adCmdText: 表明CommandText是文本命令。
adCmdTable:表明CommandText是一个表名。
adCmdProc:表明CommandText是一个存储过程。
adCmdUnknown:未知。
*/

  Source中写sql语句,实现对操作,如查询
  

 GLsql.m_pRecordset.CreateInstance("ADODB.Recordset"); 
 GLsql.m_pRecordset->Open("select * from goodsinfo" , _variant_t((IDispatch*)GLsql.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
操作完成后要记得释放指针
GLsql.m_pRecordset->Close();
GLsql.m_pRecordset=NULL;
本文参考了[夜雨阑珊](http://www.cnblogs.com/fickleness/)的博客
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值