首页 > 数据库技术 > 详细

Delphi中多线程下使用使用 UniDAC+MSSQL 需要注意的问题(连接前调用CoInitialize)

时间:2016-08-08 00:44:48      阅读:258      评论:0      收藏:0      [点我收藏+]

一般解决方法是在线程开始启用 CoInitialize(nil),线程结束调用 CoUninitialize 。如果你使用多种数据库连接,比如三层中经常切换到MSSQL和Oracle,我们只需在判断 TUniConnection 的连接前事件 OnBeforeConnect 写下如下代码:

 

 

[delphi] view plain copy
 
 print?
  1. procedure TServDBFunc.ServConnBeforeConnect(Sender: TObject);  
  2. begin  
  3. if (ServConn <> nil) and SameText(ServConn.ProviderName,‘SQL Server‘);then  
  4.     CoInitialize(nil);  
  5. end;  
  6. 在TUniConnection 的关闭连接后事件 OnAfterDisconnect 写下如下代码:  
  7. procedure TServDBFunc.ServConnAfterDisconnect(Sender: TObject);  
  8. begin  
  9. if (ServConn <> nil) and SameText(ServConn.ProviderName,‘SQL Server‘);then  
  10.     CoUninitialize;  
  11. end;   

需要注意的是,必须先判断连接控件 (ServConn <> nil) 是否为空,否则,你会陷入指针释放的问题。

http://blog.csdn.net/aroc_lo/article/details/4878224

Delphi中多线程下使用使用 UniDAC+MSSQL 需要注意的问题(连接前调用CoInitialize)

原文:http://www.cnblogs.com/findumars/p/5747749.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!