在线程中通过ADO对数据库进行操作时,出现错误,提出为:在异步运行时,操作不能被执行
在程序中使用了多个线程对数据库进行读写操作
其中
procedure TA.Execute
begin
while true do
begin
if Termiate then break;
.....//时间判断操作
.....//时间获取操作
DoingScan1; //执行过程
.......
.......
.....
end;
end;
procedure TA.DongScan1;
begin
while SencondsBetween(T1,Now)<=MaxC Do //T1,MaxC均为变量
begin
......//过程1,计算
......//过程2,判断
......//数据库读写操作
end;
end;
但是在运行线程时提示:在异步运行时,操作不能被执行
在程序中ADOQuery或ADOTable都是通过ADOConnection连接到Oracle数据库的
[解决办法]
程序中ADOQuery或ADOTable都通过ADOConnection连接到Oracle数据库,但是他们的属性初始的时候是否已经为链接状态? 比如adoquery的active属性是否为true了??
[解决办法]
建立多个ADOConnection,让每个线程独占一个ADOConnection
或者将ADOConnection建立在线程中
[解决办法]
用互斥
http://topic.csdn.net/u/20070809/10/ac1142ed-7616-4981-8e8c-ed72ebf5f066.html
[解决办法]
每个线程整一个adoconnection
[解决办法]
用ODAC组件