ADO实际上是是微软以COM技术,封装底层的OLE-DB(也是COM)方便开发人员使用的一另数据储蓄技术。
ADO原生对象:
Connection对象----
adoc:=CreateOleObject('ADODB.Connection');
adoc.openn(连接串)
RecordSet对象,使用方法:
ador:= createoleobject('ADODB.RecordSet');
ador.activeConnection:=adoc;
ador.open('select * from sysobjects',adoc,adopenstatic,adlockoptimistlc,adcmdtext);
TADOTable:相当于TADODataSet,只是相当于CommandType=CmdTable
Delphi的帮助文档《Managing multiple sessions》中给我明确的建议:
If you create a single application that uses multiple threads to perform database operations, you must create one additional session for each thread.
喔找到了:ADO控件是线程不安全的,所以如果你的程序是使用多线程访问数据库的话你应该确保每个线程都有自己的会话。由于ADO控件的线程不安全性(事实上这种不安全性是来自Micrsoft ADO Library,所以在其它开发工具中也存在同样的问题)因此在使用多线程ADO编程时应该注意一下问题:
第一:要保证每个线程都拥有自己的会话。
第二:作为客户端程序应该尽可能的减少与数据库库服务器的连接数。
第三:在退出线程之前确保释放所有的资源。