CRecordset.Open 死机???????????????

bigmm 2014-01-11 12:15:27
用ODBC连接数据库,为什么
CRecordset.Open 有时正常,有时死机?特别是操作频繁一点容易死掉?
...全文
928 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuweilike 2014-03-26
  • 打赏
  • 举报
回复
引用 15 楼 oyljerry 的回复:
[quote=引用 14 楼 wuweilike 的回复:] 目前我找到了一个原因,是因为另外一个线程SQLExecDirect调用了一个存储过程后就不动了,所以导致目前的问题,为什么SQLExecDirect调用了一个存储过程后就不动了呢,我查看了存储过程也没有语法错误啊?郁闷啊,不过还是有进展,慢慢找吧。 [quote=引用 13 楼 wuweilike 的回复:] [quote=引用 12 楼 worldy 的回复:] [quote=引用 10 楼 wuweilike 的回复:] [quote=引用 7 楼 oyljerry 的回复:] [quote=引用 6 楼 wuweilike 的回复:] [quote=引用 5 楼 worldy 的回复:] 停在open上面? 应该是同时出现对一个数据库的open操作?互锁了?
怎么能看出是互锁呢,我另外一个线程open成功,也执行close了,但是这个线程open就停了那了,线程不返回![/quote] 查看数据库信息等,是否被锁定了[/quote] 没有被锁定,我写了一个测试程序,、问题程序运行后,在运行我的测试程序是可以打开数据库数据集修改数据的,这能否说明数据库没有被锁定呢?[/quote] 你读写的是相同的数据库内容?[/quote] 同一个数据库的同一张表[/quote][/quote] 应该还是语法不对等,到数据库中验证一下[/quote] 语法不对等这个概念没听说过,有没有相关资料引介一下,百度没找到。
oyljerry 2014-03-26
  • 打赏
  • 举报
回复
引用 14 楼 wuweilike 的回复:
目前我找到了一个原因,是因为另外一个线程SQLExecDirect调用了一个存储过程后就不动了,所以导致目前的问题,为什么SQLExecDirect调用了一个存储过程后就不动了呢,我查看了存储过程也没有语法错误啊?郁闷啊,不过还是有进展,慢慢找吧。 [quote=引用 13 楼 wuweilike 的回复:] [quote=引用 12 楼 worldy 的回复:] [quote=引用 10 楼 wuweilike 的回复:] [quote=引用 7 楼 oyljerry 的回复:] [quote=引用 6 楼 wuweilike 的回复:] [quote=引用 5 楼 worldy 的回复:] 停在open上面? 应该是同时出现对一个数据库的open操作?互锁了?
怎么能看出是互锁呢,我另外一个线程open成功,也执行close了,但是这个线程open就停了那了,线程不返回![/quote] 查看数据库信息等,是否被锁定了[/quote] 没有被锁定,我写了一个测试程序,、问题程序运行后,在运行我的测试程序是可以打开数据库数据集修改数据的,这能否说明数据库没有被锁定呢?[/quote] 你读写的是相同的数据库内容?[/quote] 同一个数据库的同一张表[/quote][/quote] 应该还是语法不对等,到数据库中验证一下
wuweilike 2014-03-25
  • 打赏
  • 举报
回复
引用 12 楼 worldy 的回复:
[quote=引用 10 楼 wuweilike 的回复:] [quote=引用 7 楼 oyljerry 的回复:] [quote=引用 6 楼 wuweilike 的回复:] [quote=引用 5 楼 worldy 的回复:] 停在open上面? 应该是同时出现对一个数据库的open操作?互锁了?
怎么能看出是互锁呢,我另外一个线程open成功,也执行close了,但是这个线程open就停了那了,线程不返回![/quote] 查看数据库信息等,是否被锁定了[/quote] 没有被锁定,我写了一个测试程序,、问题程序运行后,在运行我的测试程序是可以打开数据库数据集修改数据的,这能否说明数据库没有被锁定呢?[/quote] 你读写的是相同的数据库内容?[/quote] 同一个数据库的同一张表
worldy 2014-03-25
  • 打赏
  • 举报
回复
引用 10 楼 wuweilike 的回复:
[quote=引用 7 楼 oyljerry 的回复:] [quote=引用 6 楼 wuweilike 的回复:] [quote=引用 5 楼 worldy 的回复:] 停在open上面? 应该是同时出现对一个数据库的open操作?互锁了?
怎么能看出是互锁呢,我另外一个线程open成功,也执行close了,但是这个线程open就停了那了,线程不返回![/quote] 查看数据库信息等,是否被锁定了[/quote] 没有被锁定,我写了一个测试程序,、问题程序运行后,在运行我的测试程序是可以打开数据库数据集修改数据的,这能否说明数据库没有被锁定呢?[/quote] 你读写的是相同的数据库内容?
wuweilike 2014-03-25
  • 打赏
  • 举报
回复
和线程的优先级有关系吗
wuweilike 2014-03-25
  • 打赏
  • 举报
回复
引用 7 楼 oyljerry 的回复:
[quote=引用 6 楼 wuweilike 的回复:] [quote=引用 5 楼 worldy 的回复:] 停在open上面? 应该是同时出现对一个数据库的open操作?互锁了?
怎么能看出是互锁呢,我另外一个线程open成功,也执行close了,但是这个线程open就停了那了,线程不返回![/quote] 查看数据库信息等,是否被锁定了[/quote] 没有被锁定,我写了一个测试程序,、问题程序运行后,在运行我的测试程序是可以打开数据库数据集修改数据的,这能否说明数据库没有被锁定呢?
wuweilike 2014-03-25
  • 打赏
  • 举报
回复
引用 8 楼 worldy 的回复:
推测的,你自己检查一下,是不是停在open上面,要不,在open的地方加上一个互斥锁,看看效果 话说,打开数据库不用使用多线程,自找麻烦,打开一次就可以,不需要频繁的open/close
我打开数据库是一次,数据集是多次打开的。
worldy 2014-03-25
  • 打赏
  • 举报
回复
推测的,你自己检查一下,是不是停在open上面,要不,在open的地方加上一个互斥锁,看看效果 话说,打开数据库不用使用多线程,自找麻烦,打开一次就可以,不需要频繁的open/close
oyljerry 2014-03-25
  • 打赏
  • 举报
回复
引用 6 楼 wuweilike 的回复:
[quote=引用 5 楼 worldy 的回复:] 停在open上面? 应该是同时出现对一个数据库的open操作?互锁了?
怎么能看出是互锁呢,我另外一个线程open成功,也执行close了,但是这个线程open就停了那了,线程不返回![/quote] 查看数据库信息等,是否被锁定了
wuweilike 2014-03-25
  • 打赏
  • 举报
回复
引用 5 楼 worldy 的回复:
停在open上面? 应该是同时出现对一个数据库的open操作?互锁了?
怎么能看出是互锁呢,我另外一个线程open成功,也执行close了,但是这个线程open就停了那了,线程不返回!
worldy 2014-03-25
  • 打赏
  • 举报
回复
停在open上面? 应该是同时出现对一个数据库的open操作?互锁了?
wuweilike 2014-03-25
  • 打赏
  • 举报
回复
引用 3 楼 wuweilike 的回复:
[quote=引用 2 楼 worldy 的回复:] 代码逻辑估计有问题,应该不是死掉,是被卡住了或者死锁
我在线程里调用open函数,线程就不往下走了,程序还是正常,这是为什么啊?请多指教![/quote] 不返回失败,也不返回成功,楼主及达人有招吗?
wuweilike 2014-03-25
  • 打赏
  • 举报
回复
引用 2 楼 worldy 的回复:
代码逻辑估计有问题,应该不是死掉,是被卡住了或者死锁
我在线程里调用open函数,线程就不往下走了,程序还是正常,这是为什么啊?请多指教!
wuweilike 2014-03-25
  • 打赏
  • 举报
回复
目前我找到了一个原因,是因为另外一个线程SQLExecDirect调用了一个存储过程后就不动了,所以导致目前的问题,为什么SQLExecDirect调用了一个存储过程后就不动了呢,我查看了存储过程也没有语法错误啊?郁闷啊,不过还是有进展,慢慢找吧。
引用 13 楼 wuweilike 的回复:
[quote=引用 12 楼 worldy 的回复:] [quote=引用 10 楼 wuweilike 的回复:] [quote=引用 7 楼 oyljerry 的回复:] [quote=引用 6 楼 wuweilike 的回复:] [quote=引用 5 楼 worldy 的回复:] 停在open上面? 应该是同时出现对一个数据库的open操作?互锁了?
怎么能看出是互锁呢,我另外一个线程open成功,也执行close了,但是这个线程open就停了那了,线程不返回![/quote] 查看数据库信息等,是否被锁定了[/quote] 没有被锁定,我写了一个测试程序,、问题程序运行后,在运行我的测试程序是可以打开数据库数据集修改数据的,这能否说明数据库没有被锁定呢?[/quote] 你读写的是相同的数据库内容?[/quote] 同一个数据库的同一张表[/quote]
worldy 2014-01-11
  • 打赏
  • 举报
回复
代码逻辑估计有问题,应该不是死掉,是被卡住了或者死锁
Eleven 2014-01-11
  • 打赏
  • 举报
回复
你说的操作频繁指的是什么意思?多次做Open操作?还是什么?

4,011

社区成员

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

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