打印本文 打印本文 关闭窗口 关闭窗口
Delphi多线程下的ADO编程
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3225  更新时间:2009/4/23 10:50:07  文章录入:mintao  责任编辑:mintao

ADOConnection2

 

 

 

 

 

 


                                                                              

 

 

 

 

 

 

 

 

 

 

 

 

图三

 

我增加了一个ADOConnection以保证每个线程都有一个自己连接(会话),从而避免出现资源冲突,我的问题是不是解决了呢?是的,这个问题已经解决了,将我的程序与数据库放在同一台机器上运行没有问题,但是当程序与数据库服务器不在同一台机器上运行时会出现一个新的问题。

 

[DBNMPNTW]ConnectionWrite(writeFile())错误

     这个错误不是多线程引起的,而是Micrsoft自己的一个问题,产生该问题的原因可能是因为网络异常而引起的,可以通过SQLServer客户端的默认的网络协议named pipes network propocol 改为 TCP/IP Sockets,具体做法请参考Micrsoft技术支持网站的《Microsoft Knowledge Base Article - Q178040

 

总结

   由于ADO控件的线程不安全性(事实上这种不安全性是来自Micrsoft ADO Library,所以在其它开发工具中也存在同样的问题)因此在使用多线程ADO编程时应该注意一下问题:

 

第一:要保证每个线程都拥有自己的会话。

第二:作为客户端程序应该尽可能的减少与数据库库服务器的连接数。

第三:在退出线程之前确保释放所有的资源。

 

参考文献:

1、李维《Delphi 5.X ADO/MTS/COM+高级程序设计篇》 机械工业出版社 2000。

2、Charlie Calvert《Delphi 4编程技术内幕》潇湘工作室 译 机械工业出版社 1999。

上一页  [1] [2] [3] 

打印本文 打印本文 关闭窗口 关闭窗口