多线程操作数据库的问题?

xiaokun111 2013-11-04 11:49:18
主线程在数据库中添加记录,还有一个线程IdTcpServer接收网络包后删除数据库中的记录,
增加和删除的操作为同一个表。
总是发生错误。
加上临界区,互斥也不行。
但单独运行某个线程是没有问题的,两个线程同开则就报错。
...全文
104 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaokun111 2013-11-04
  • 打赏
  • 举报
回复
临界区,互斥在这种情况下似乎都失效了
xiaokun111 2013-11-04
  • 打赏
  • 举报
回复
不是显示,后台操作的,不用DBGrid。 当两个线程一个增加记录,一个删除记录就会报错。 两个线程同时读数据是没问题的。 不知道是线程的问题还是ADO的问题?
Oraclers 2013-11-04
  • 打赏
  • 举报
回复
首先你使用了同一个表,在操作表时,如果你不是显式去锁定,系统是会锁定表的。你在客户端用什么方法都是不行的。可以改为准备好数据后,然后执行SQL语句插入记录,不要用DBGRID类似的界面去插入记录,否则会长时间锁表。删除亦同样。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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