自 自由自在 Unregistered / Unconfirmed GUEST, unregistred user! 2010-06-14 #1 D7+SQL2000开发,由于业务需求,须用多线程;在每个线程中动态建立了ADOConnection和两个ADOQuery,每线程和数据库建立自已的联接,COM组件也初始化了CoInitialize(nil);运行一段时间后还是会报错:连接占线导致另一个命令
D7+SQL2000开发,由于业务需求,须用多线程;在每个线程中动态建立了ADOConnection和两个ADOQuery,每线程和数据库建立自已的联接,COM组件也初始化了CoInitialize(nil);运行一段时间后还是会报错:连接占线导致另一个命令
V victorfjb Unregistered / Unconfirmed GUEST, unregistred user! 2010-06-21 #4 我的想法:1.建议所有线程共享一个ADOConnection,每个线程可以动态创建各自的ADOQuery2.ADOQuery在使用完之后马上Close掉当然,最好还是把数据库操作部分的代码贴出来
S Supermay Unregistered / Unconfirmed GUEST, unregistred user! 2010-06-22 #6 共享连接吧,多个连接,在多线程中不断切换还慢多线程多连接时间>多线程共享连接>单线程单连接
A a_Fung Unregistered / Unconfirmed GUEST, unregistred user! 2010-07-06 #9 ADOQuery.close后把 ADOQuery.ConnectionString :='' 也置空
L liuls Unregistered / Unconfirmed GUEST, unregistred user! 2010-07-06 #10 这个可不是一个 CoInitialize(nil); 就可以搞定的。只要是创建了 COM 对象就要用一个,不管是隐性还是显性创建了;比如说:CoInitialize(nil); ADOConnection.Connected := True;// ...ADOConnection.Connected := False;CoUninitialize;
这个可不是一个 CoInitialize(nil); 就可以搞定的。只要是创建了 COM 对象就要用一个,不管是隐性还是显性创建了;比如说:CoInitialize(nil); ADOConnection.Connected := True;// ...ADOConnection.Connected := False;CoUninitialize;
L liuls Unregistered / Unconfirmed GUEST, unregistred user! 2010-07-06 #11 其实也可以考滤在主线程中创建对象,把执行过程放到线程里执行