[英]How to close a connection with a firebird database
我正在使用 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
時開始一個新事務。 監控表的內容在單個事務中“凍結”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.