为什么当执行Connection.Close时,数据库连接实际上没有立即断开?

junglerover 2005-07-07 05:36:49
为了把问题表现得更直接,这里使用了原生ADO对象,请测试以下代码:

var
Conn : Variant;

begin
Conn:=CreateoleObject('ADODB.CONNECTION');
Conn.Open('*******');
Conn.Close;
ShowMessage('Stop!');
end;

当弹出STOP!对话框时,不要关闭它,赶快到你的数据库服务器上看一下连接情况:该连接并没有被关闭!等待一分钟以后,才发现该连接自己断开。

这是什么原因?难道DELPHI调用ADO时会自己做个连接缓冲池,以备下次使用,所以执行CLOSE时并不立即关闭连接?的确如此,执行第二遍OPEN的时候,明显比第一遍快。我没有找到相关的说明,还请哪位大虾讲解一下。
...全文
391 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
junglerover 2005-07-10
  • 打赏
  • 举报
回复
这个恐怕跟网络的快慢没有什么关系,大家请测试以下同样的VB代码:

dim Conn as object
set Conn=CreateObject('ADODB.Connection')
Conn.Open("*************")
Conn.Close
Msgbox "Stop!"

就能看见明显的不同了。在VB中,CONNECTION毫无疑问是立即断开的。应该是BORLAND做了缓冲,但是哪位能告诉我,这个缓冲是怎样做的,如何配置,等等?
seekmydoom 2005-07-10
  • 打赏
  • 举报
回复
干脆这样,ADOConnection.ConnectionString:='';
我才不相信还能连上呢
lovend 2005-07-07
  • 打赏
  • 举报
回复
连接的断开需要一小段时间的嘛,也许还跟网络的快慢有点关系。
海宏AA 2005-07-07
  • 打赏
  • 举报
回复
直接Connected成False好像跟Close一样吧? Borland应该是有缓冲的。
hqhhh 2005-07-07
  • 打赏
  • 举报
回复
ADOConnection1.Connected := False
lily_1979 2005-07-07
  • 打赏
  • 举报
回复
ADOConnection1.Connected := False
Kshape 2005-07-07
  • 打赏
  • 举报
回复
要不直接去用以下命令:Kill 连接号
再ADOConnection1.Connected := False;//ADOConnection1.Close;
行不行?

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧