c# - 如何关闭与 Firebird 数据库的连接

标签 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=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() 命令,但它没有用。

当我进行调试时,我意识到当它通过 .Open() 命令时它会打开连接,这没问题。但是当它通过 .Close() 命令时,连接仍然在数据库上打开。

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

select * FROM MON$ATTACHMENTS

最佳答案

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

调用 FbConnection.ClearPool(connection)FbConnection.ClearAllPools() 应该关闭池中当前打开的连接。

同时确保在查询 MON$ATTACHMENTS 时开始一个新事务。监控表的内容在单个事务中被“卡住”。

关于c# - 如何关闭与 Firebird 数据库的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35408912/

相关文章:

c# - LINQ 组求和查询中的 Bool 到 int

c# - 如何将此 C# 函数转换为 F# 函数

javascript - Jquery 问题 : How can I break up a multi-part form so that only one fieldset is visible at a time?

asp.net - 系统.Web.HttpException : Request timed out

c# - 使用 COntrol 键控制按钮的可见性

c# - 试图在c#中获取链表的特定节点的地址

asp.net - 在 ASP.NET 页面上显示 XML

asp.net - 如何在 http 和 https 之间共享 asp.net session

c# - 获取队列中元素的索引c#

asp.net - 自动生成的表单值