线程中数据库如何操作?(50分)

  • 主题发起人 没理头号
  • 开始时间

没理头号

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一线程中用以下语句,
fQuery := TADOQuery.Create(Application);
fQuery.ConnectionString :=CNTSTR;//连接字串
fQuery.Close;
fQuery.SQL.Clear;
fQuery.SQL.Add(APTSQLRec.FSQLStr + fStr + ')');
//生成SQL语句,eg:
fQuery.ExecSQL;
//有一个入一个
错误提示为:
Project uServer.exe raised eception class EOleExcepion with message'尚未调用CoInitialize。'
 
在 你的程序片前加上 coInitialize;
后加上 coUnInitialize;
记得uses Activex 单元
 
老大能不能讲讲上面是什么意思啊?
 
也就是说做了上面的工作,在线程中就能安全的用TADOQuery了吗?
是这样的吗?
 
为什么一定要动态创建Ado呢?
还不如将与数据库操作相关的组建放在TDataModule里面
创建线程时,申明一个变量指向该TDataModule,然后在线程里面使用就好了。
 
楼上的意思是不是TDataModule里的数据库操作都是线程安全的吗?
 
在缴费的接口系统都是这么做的,你说安不安全呢。
 
楼上的,我必须用动态生成的Adoquery,
能告诉我怎么才能在线程中安全使用adoquery吗?
 
在线程单元最后加上:
initialization
CoInitialize(nil);
end.
 
大哥,好象不行啊?
我现在的问题是,
我程序一开始生成了一系列的adoquery,
以后我在线程中只是adoquery.refresh一下得到最新数据,
好象运行没问题,但是线程结束时老是会出错,不知为什么?
 
接受答案了.
 
顶部