关于ADO的困惑......谢谢(100分)

  • 主题发起人 主题发起人 wjlsnet
  • 开始时间 开始时间
W

wjlsnet

Unregistered / Unconfirmed
GUEST, unregistred user!
我真的不明白,为什么会是这样。
我们有个程序,有多个模块组成,每个模块都为独立的EXE。进程间用WM_COPYDATA通信。
存在这样一个问题:一个模块在运行时总是出现:
“ [Microsoft][ODBC SQL Server Driver]连接占线导致另一个hstmt“
但程序并不会死掉,后来将这个模块与数据库采用ADO直接连接(指定数据库服务器、数据库)
避开ODBC,如上错误不再出现,但数据访问速度我觉得有点下降;但更不可思议的是:偶尔,
程序会出现逻辑错误,这种错误从来没有出现过,而且没有规律,也就是说,第一次出现后用相
同的条件测试跟踪但错误不可再现。

我怀疑为ADO的问题,请您帮我分析一下原因,真的很蹊跷。 谢谢
 
这是唯一的原因吗?
 
有点怪。我想你的那些模块应该采用同样的连接方式吧,如果只是这一个模块出问题的话,
我想应该是程序本身的问题,你好好检查一下这个程序和别的有什么不同。不过最好使用
ADO的高版本,低版本存在一些问题。
 
zag2000:
您好,谢谢您的回答。 的确,这几个模块都是采用想同的方式和数据库链接,公用一个DSN通过
ODBC和数据库链接。 这个出问题的模块和别的模块的唯一区别就是 对数据库的存取很频繁;但我
想着并不是问题的根源;我对数据库的操作都是用如下方式:

procedure ExecSqls(ss:string);
begin
with TADOQuery.Create(nil) do
begin
try
begin
Connection:=TheConnection;
Sql.Text:=ss;
ExecSql;
end;
finally
Free;
end;
end;
end;

这段代码我认为是安全的。

望大家继续指导,谢谢
 
我在delphi5+odbc+sql2000也遇到過這種問題,
高手快來。
 
sichuan: 同病相怜:),快去找大师来:)
 
请尽快找有关delphi5的 ado,bde511,5.2及它本身的upgrade版 升级,希望
可以解决你门遇见的问题。
 
sunny255: 我的是6.0
sichuan 喧宾夺主:)

大家快看看呀
 
我的程序也有些不明不白的错误 ,明明两条同样的语句,有些可以执行,有些不行,
而且不稳定,有时候可以,第二次运行又出错了!我真的怀疑是ADO 的问题,同样有时连接
数据库慢得很!!谁知道ADO补丁或高级版本哪有下载???
 
>>同样有时连接,数据库慢得很!!
我有遇到过类似的情况,后来是因为发现在同一个程序中用了多个ADOCONNECTION的缘故,从而导致数据库刷新也很慢,
不知道你的是不是这类的情况。
 
TrueBing:

非常感谢您的回答。 在程序中我只动态创建了一个TADOConnection

欢迎大家继续讨论,继续指导
 
你试试把ADOQuery换成ADOCommand
 
我试试.........
 
有没有用线程?DLL?
 
DelphiSwords: 用了
您能否留下联系方式?
 
您的错误应该是多线程引起的,虽然MSDN讲:2.0以后的ADO都是Thread-Safe,但是确实会发生这个错误。每个线程一个Connection可以消除这个错误。但是注意ADO只能开到64个Connection
 
DelphiSwords: 您好,谢谢回复。在多线程中怎样才能避免这种错误? 谢谢

请大家继续指导
 
我一直是用ADO,怎么从来没有出现你们所说的问题,我想这不是ADO的问题,应该是你的
程序的问题吧。。。。。
 
后退
顶部