ADO+多线程(100)

  • 主题发起人 主题发起人 自由自在
  • 开始时间 开始时间

自由自在

Unregistered / Unconfirmed
GUEST, unregistred user!
D7+SQL2000开发,由于业务需求,须用多线程;在每个线程中动态建立了ADOConnection和两个ADOQuery,每线程和数据库建立自已的联接,COM组件也初始化了CoInitialize(nil);运行一段时间后还是会报错:连接占线导致另一个命令
 
我认为最好共享连接
 
我的想法:1.建议所有线程共享一个ADOConnection,每个线程可以动态创建各自的ADOQuery2.ADOQuery在使用完之后马上Close掉当然,最好还是把数据库操作部分的代码贴出来
 
多半是线程同步问题。
 
共享连接吧,多个连接,在多线程中不断切换还慢多线程多连接时间>多线程共享连接>单线程单连接
 
同意楼上的,共享连接。
 
以上的回答,不太满意;各位高手再指点指点
 
ADOQuery.close后把 ADOQuery.ConnectionString :='' 也置空
 
这个可不是一个 CoInitialize(nil); 就可以搞定的。只要是创建了 COM 对象就要用一个,不管是隐性还是显性创建了;比如说:CoInitialize(nil); ADOConnection.Connected := True;// ...ADOConnection.Connected := False;CoUninitialize;
 
其实也可以考滤在主线程中创建对象,把执行过程放到线程里执行
 
后退
顶部