怎么在线程中使用_RecordsetPtr记录集

hanyuwei0 2010-07-17 01:08:24

定义ADO连接、命令、记录集变量指针。都是类的成员
_ConnectionPtr m_pConnection;
_CommandPtr m_pCommand;
_RecordsetPtr m_pRecordset;

这个是在C..App文件里初始化的
AfxOleInit();
。。。。。 等等初始化工作

我在C...Dlg类里
m_pRecordset.CreateInstance(__uuidof(Recordset));
...等等初始化工作

上面这些都没问题,我在C...Dlg类里创建了一个static的线程成员函数
DWORD WINAPI C...Dlg::RecvProc(LPVOID lp)
{
这里面我要用_RecordsetPtr的对象该怎么用来操作同一个数据库表呢?
m_pRecordset肯定不能用
在外面定一个全局的_RecordsetPtr可以用,但是程序退出时释放不了,会有问题
}

还有什么方法呢
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanyuwei0 2010-07-17
  • 打赏
  • 举报
回复
阿荣 你说的很对,要重新定义对象并初始化才能用。谢谢
arong1234 2010-07-17
  • 打赏
  • 举报
回复
这个更重要的是“套间”的问题而不是线程问题,不同线程很可能在不同套间,COM对象是不允许跨套间使用的。我估计你最好在专门的线程里初始化这个COM体系,不要在不同线程中创建和使用
zyq5945 2010-07-17
  • 打赏
  • 举报
回复
DWORD WINAPI C...Dlg::RecvProc(LPVOID lp)
{
VERIFY(S_OK==CoInitialize(NULL));

// 使用ADO

CoUninitialize();
return 0;
}
hanyuwei0 2010-07-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 blukercn 的回复:]
当然是作为成员变量使用
[/Quote]
线程函数是static的,不能用使用类的成员变量
  • 打赏
  • 举报
回复
当然是作为成员变量使用

4,011

社区成员

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

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