多线程操作数据库(ado)问题

suisuibianbian 2004-06-17 12:25:12
全部数据库操作封装成DLL,数据库中有三个表。

主线程先调用DLL中的连接数据库函数后往表中写数据,
开了三个子线程每隔30秒从数据库三个表中分别取出数据,子线程中也调用DLL的连接数据库函数,取数据操作完成后就关闭数据库连接。

如果只开一个线程,就没有问题,开两个就老是出现异常。

ado是支持多线程的呀,高手帮忙,先谢了
...全文
237 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
suisuibianbian 2004-06-21
  • 打赏
  • 举报
回复
好像搞定了,多线程就是麻烦
suisuibianbian 2004-06-20
  • 打赏
  • 举报
回复
挂了,出错的地方还是随机的,怎么搞啊
九重霄 2004-06-18
  • 打赏
  • 举报
回复
关注
大脚板 2004-06-18
  • 打赏
  • 举报
回复
另,能否判定是否CoInitialize(NULL)过了
大脚板 2004-06-18
  • 打赏
  • 举报
回复
试了一下,果然如vcforever(霓裳羽衣) 所说
大脚板 2004-06-18
  • 打赏
  • 举报
回复
我也碰到类似的问题,封装了一个类,主线程中一切正常,把对象传递到辅助线程里,连接的时候就出现问题了,感觉应该是 vcforever(霓裳羽衣) 说的问题
suisuibianbian 2004-06-17
  • 打赏
  • 举报
回复
不好意思,没说清楚主线程中的写数据是调用的另一个DLL中的函数,这个函数调用了数据库操作DLL的连接函数和写数据函数,可以吗
Kudeet 2004-06-17
  • 打赏
  • 举报
回复
除非你一个连接使用完了关闭之后,你才可以重新和数据库建立连接!
Kudeet 2004-06-17
  • 打赏
  • 举报
回复
呵呵!你的数据库能支持多线程吗?几个线成同时对它进行操作!看你上面的介绍好象是不行的吧!主线程连接后,三个子线程对数据库操作,这个时候你的数据库是打开的了,而你的子线程又调用DLL的连接数据库函数,当然会有问题的啦!连接一个正在操作的数据库!会出问题的!
suisuibianbian 2004-06-17
  • 打赏
  • 举报
回复
To aben456(相逢一笑) :
"传递这个连接过去就可以了",具体怎么操作我不太明白,能详细些吗
aben456 2004-06-17
  • 打赏
  • 举报
回复
你可以保持这个连接
写数据的时候,传递这个连接过去就可以了
suisuibianbian 2004-06-17
  • 打赏
  • 举报
回复
To vcforever(霓裳羽衣):
子线程中调用的DLL中的每个函数开始都有CoInitialize(NULL),结束是有CoUninitialize(),你的意思是否是子线程中也要加上,这样会否出错
vcforever 2004-06-17
  • 打赏
  • 举报
回复
出现什么异常???

最好在每个线程中使用CoInitialize(NULL);都初始化一下COM库
线程结束后使用CoUninitialize()卸载COM库
Kudeet 2004-06-17
  • 打赏
  • 举报
回复
是的!
suisuibianbian 2004-06-17
  • 打赏
  • 举报
回复
那只有修改主线程中的那个DLL了,要写数据时连接,之后马上关闭了,是这个意思吧
Kudeet 2004-06-17
  • 打赏
  • 举报
回复
同一个程序下连接两次就会引起错误!
Kudeet 2004-06-17
  • 打赏
  • 举报
回复
尽量不要对一个已经连操作接的数据库再次建立连接!很容易出问题的!我以前遇到过!

4,018

社区成员

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

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