使用ado 的 Recordset对象,Open方法的第一个参数用Command对象的问题?

开始远离编程 2006-08-10 10:13:33
Recordset对象,Open方法,第一个参数可以使用Command对象,但是不知道参数要怎么填写?
m_pRecordset->Open(_variant_t( (IDispatch*)pCommand, true),_variant_t((IDispatch*)NULL,true),CursorType, LockType, lOption )
有谁这么用过的?给个成功的代码例子。谢谢

...全文
533 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
handsomerun 2006-08-10
  • 打赏
  • 举报
回复
利用Command对象来执行SQL命令
_CommandPtr m_pCommand;
m_pCommand.CreateInstance("ADODB.Command");
_variant_t vNULL;
vNULL.vt = VT_ERROR;
vNULL.scode = DISP_E_PARAMNOTFOUND;///定义为无参数
m_pCommand->ActiveConnection = m_pConnection;///非常关键的一句,将建立的连接赋值给它
m_pCommand->CommandText = "SELECT * FROM users";///命令字串
m_pRecordset = m_pCommand->Execute(&vNULL,&vNULL,adCmdText);///执行命令,取得记录集


用open和直接执行command的execute一样可以获得记录集合

开始远离编程 2006-08-10
  • 打赏
  • 举报
回复
已经测试成功了。之前就是vNULL没有传对。谢谢你的代码了。
_variant_t vNULL;
vNULL.vt = VT_ERROR;
vNULL.scode = DISP_E_PARAMNOTFOUND;
_CommandPtr pCommand;
...
m_pRecordset->Open(_variant_t( (IDispatch*)pCommand, true),vNULL,CursorType, LockType, lOption )
handsomerun 2006-08-10
  • 打赏
  • 举报
回复
另外,你open的时候,try,catch一下,看看是什么错
handsomerun 2006-08-10
  • 打赏
  • 举报
回复
这个文档我也看过

很少看到例子

有这么一句话

如果在 Source 参数中传送 Command 对象并且同时传递 ActiveConnection 参数,那么将产生错误。Command 对象的 ActiveConnection 属性必须已经设置为有效的 Connection 对象或者连接字符串。

是不是,如果是用command对象的时候,ActiveConnection 这个参数不能传递连接
你试试用null呢



开始远离编程 2006-08-10
  • 打赏
  • 举报
回复
上面的代码我知道,但是这种方式得到的记录集有一个很大的缺陷。
就是记录集的打开方式是adOpenForwardOnly的。一般情况下没什么问题,但在我的程序当中,
使用的时候,不是那么方便。我希望打开方式是adOpenDynamic。
但是我又必须使用Command对象(譬如访问预编译SQL,或者存储过程)。
ado的Recordset的对象的open方法,支持直接将Command对象作为第一个参数(即数据源参数).
但是我没有实验成功。如果试验成功,我就可以将Recordset打开方式事先修改为adOpenDynamic
类型。

============下面是ado210.chm中的说明===============================
Open 方法 (ADO Recordset)
打开游标。
语法
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
参数
Source 可选,变体型,计算 Command 对象的变量名、SQL 语句、表名、存储过程调用或持久 Recordset 文件名。
ActiveConnection 可选。变体型,计算有效 Connection 对象变量名;或字符串,包含 ConnectionString 参数。

使用 Recordset 对象的 Open 方法可打开代表基本表、查询结果或者以前保存的 Recordset 中记录的游标。
使用可选的 Source 参数指定使用下列内容之一的数据源:Command 对象变量、SQL 语句、存储过程、表名或完整的文件路径名。
如果 Source 是文件路径名,它可以是完整路径(“c:\dir\file.rst”)、相对路径(“..\file.rst”)或 URL(“http://files/file.rst”)。

4,018

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧