为了把问题表现得更直接,这里使用了原生ADO对象,请测试以下代码:var
Conn : Variant;begin
  Conn:=CreateoleObject('ADODB.CONNECTION');
  Conn.Open('*******');
  Conn.Close;
  ShowMessage('Stop!');
end;当弹出STOP!对话框时,不要关闭它,赶快到你的数据库服务器上看一下连接情况:该连接并没有被关闭!等待一分钟以后,才发现该连接自己断开。这是什么原因?难道DELPHI调用ADO时会自己做个连接缓冲池,以备下次使用,所以执行CLOSE时并不立即关闭连接?的确如此,执行第二遍OPEN的时候,明显比第一遍快。我没有找到相关的说明,还请哪位大虾讲解一下。

解决方案 »

  1.   

    要不直接去用以下命令:Kill 连接号
    再ADOConnection1.Connected := False;//ADOConnection1.Close;
    行不行?
      

  2.   

    ADOConnection1.Connected := False
      

  3.   

    ADOConnection1.Connected := False
      

  4.   

    直接Connected成False好像跟Close一样吧? Borland应该是有缓冲的。
      

  5.   

    这个恐怕跟网络的快慢没有什么关系,大家请测试以下同样的VB代码:dim Conn as object
    set Conn=CreateObject('ADODB.Connection')
    Conn.Open("*************")
    Conn.Close
    Msgbox "Stop!"就能看见明显的不同了。在VB中,CONNECTION毫无疑问是立即断开的。应该是BORLAND做了缓冲,但是哪位能告诉我,这个缓冲是怎样做的,如何配置,等等?
      

  6.   

    干脆这样,ADOConnection.ConnectionString:='';
    我才不相信还能连上呢