首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

请问ADOQuery是否可以锁表

2012-02-27 
请教ADOQuery是否可以锁表?请问各位ADOQuery在用的时候是否可以锁定某张表让别人不能操作?比如写如下代码A

请教ADOQuery是否可以锁表?
请问各位ADOQuery在用的时候是否可以锁定某张表让别人不能操作?
比如写如下代码
ADOQuery->Connection = ....;
ADOQuery->SQL->Clear();
ADOQuery->SQL->Add(lock tables test read); //这里锁test表
ADOQuery->ExecSQL();

ADOQuery->SQL->Clear();
ADOQuery->SQL->Add("insert into test values(....)"); //这里同一个ADOQuery再对这张表做insert
ADOQuery->ExecSQL();

这样写是不是有问题?怎么好像连自己也锁了,提示说insert失败?

代码是用妖哥网站上下的链接MySql的 TMyQuery来做的 应该和ADOQuery是一个道理, 怎么跑出来的结果锁表把自己也锁了?

请帮忙看一下

[解决办法]
你获取的是一个read 锁, 这个锁的作用使得任意一个线程对该表只能进行读取操作.

你想只有一个线程写应该获取一个write锁

lock table test write
[解决办法]

探讨
请问各位ADOQuery在用的时候是否可以锁定某张表让别人不能操作?
比如写如下代码
ADOQuery->Connection = ....;
ADOQuery->SQL->Clear();
ADOQuery->SQL->Add(lock tables test read);    //这里锁test表
ADOQuery->ExecSQL();

ADOQuery->SQL->Clear();
ADOQuery->SQL->Add("insert into test values(....)");    //这里同一个ADOQuery再对这张表做insert
ADOQuery->ExecSQL();

这样写是不是有问题?怎么好像连自己也锁了,提示说insert失败?

代码是用妖哥网站上下的链接MySql的 TMyQuery来做的 应该和ADOQuery是一个道理, 怎么跑出来的结果锁表把自己也锁了?

请帮忙看一下

热点排行