C# 如何关闭与firebird数据库的连接

C# 如何关闭与firebird数据库的连接,c#,asp.net,webforms,firebird,firebird-.net-provider,C#,Asp.net,Webforms,Firebird,Firebird .net Provider,我正在使用asp.net c webforms framework 4.5开发一个项目,我在Firebird数据库上做了一个连接测试,但当我关闭此连接时,它并没有关闭,我使用了以下代码: string conDDNS; FbConnection conexaoDDNS; protected void Abrir_Fechar_Click(object sender, EventArgs e) { try { this.conDDNS = "DRIVER=Inte

我正在使用asp.net c webforms framework 4.5开发一个项目,我在Firebird数据库上做了一个连接测试,但当我关闭此连接时,它并没有关闭,我使用了以下代码:

string conDDNS;
FbConnection conexaoDDNS;

protected void Abrir_Fechar_Click(object sender, EventArgs e)
{
    try
    {
        this.conDDNS = "DRIVER=InterBase/Firebird(r) driver;User=SYSDBA;Password=masterkey;Database=localhost:C:/AdCom/ADCOM.FDB";

        this.conexaoDDNS = new FbConnection(conDDNS);
        this.conexaoDDNS.Open();
        ListItem item = new ListItem("Conexão aberta");
        ListBox1.Items.Add(item);

        this.conexaoDDNS.Dispose();
        this.conexaoDDNS.Close();
        ListItem item2 = new ListItem("Conexão fechada");
        ListBox1.Items.Add(item2);

    }
    catch (Exception erro)
    {
        ListItem item = new ListItem(erro.ToString());
        ListBox1.Items.Add(item);
    }

}
我已经使用了.Close和.Dispose命令,但它不起作用

当我进行这个调试时,我意识到当它经过.Opencommand时,它会打开连接,这是正确的。但当它经过.Close命令时,数据库上的连接仍处于打开状态

要知道在数据库上打开的连接数,我使用以下命令:

从MON$ATTACHMENTS中选择*
Firebird.NET提供程序具有内置连接池,默认情况下已启用。您可以将Pooling=false添加到连接字符串中以禁用它。然而,在很多情况下,连接池是一件好事,它可以节省打开连接的时间,因此请确保确实需要禁用它

调用FbConnection.ClearPoolconnection或FbConnection.ClearAllPools应关闭池中当前打开的连接


另外,请确保在查询MON$附件时启动新事务。监视表的内容在单个事务中“冻结”

Firebird.NET提供程序有一个内置连接池,默认情况下已启用。您可以将Pooling=false添加到连接字符串中以禁用它。然而,在很多情况下,连接池是一件好事,它可以节省打开连接的时间,因此请确保确实需要禁用它

调用FbConnection.ClearPoolconnection或FbConnection.ClearAllPools应关闭池中当前打开的连接


另外,请确保在查询MON$附件时启动新事务。监视表的内容在单个事务中“冻结”

在调用Dispose之前,应该先调用Close。您还可以使用Using语句,而不是手动调用Dispose。您确定检查是否打开了连接,是否始终是当前状态,或者其更新是否有点延迟?调用close后连接保持打开多久?Firebird.NET提供程序具有内置连接池;我相信它是默认启用的,将Pooling=false添加到连接字符串以禁用它。另外,请确保在查询MON$附件时启动新事务。监视表的内容在单个事务中被“冻结”。@MarkRotterVeel添加Pooling=false有效,非常感谢!在调用Dispose之前,应该先调用Close。您还可以使用Using语句,而不是手动调用Dispose。您确定检查是否打开了连接,是否始终是当前状态,或者其更新是否有点延迟?调用close后连接保持打开多久?Firebird.NET提供程序具有内置连接池;我相信它是默认启用的,将Pooling=false添加到连接字符串以禁用它。另外,请确保在查询MON$附件时启动新事务。监视表的内容在单个事务中被“冻结”。@MarkRotterVeel添加Pooling=false有效,非常感谢!