2009-12-05 54 views
0

我在web.config文件中做出的連接字符串。.NET數據庫連接池發生錯誤?

<connectionStrings> 
    <add name="Test_registration" 
    connectionString="Data Source=DOTNET\SA;Initial Catalog=Test2009;User ID=trainee;Password=trainee123" 
    providerName="System.Data.SqlClient"/> 
</connectionStrings> 

而在CS文件做出構造函數打開連接。

public main_connection() 
{ 
    sql_conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Test_registration"].ConnectionString); 
    sql.conn.open(); 
} 

但我在服務器上的程序運行取得連接池錯誤。

誰能告訴我,我應該關閉連接?在我的項目cs文件的web.config文件中,我打開連接?

我想我開始只是一個時間的連接編寫的close()語句一次。

+0

請提供有關異常的堆棧跟蹤信息。也給連接字符串(刪除任何敏感信息)。 – 2009-12-05 17:29:06

+1

亞..我加入我的連接字符串到我的問題。現在告訴我如何解決它 – sikender 2009-12-05 18:01:05

回答

1

組連接字符串,這裏更漂亮。

然後使用下面的代碼。 (sql_conn是連接對象的名稱)

try { sql_conn.Open(); } 
      catch (Exception) 
      { 
       if (sql_conn.State != ConnectionState.Closed) 
       { 
        sql_conn.Close(); 
        sql_conn.Open(); 
       } 
      } 
+1

10我通過在互聯網上做研究得到了這一個。然後開發它。 – sikender 2009-12-07 18:46:46

0

我想你應該打開一個連接,執行SQL語句,並立即關閉連接。提供者負責連接池。

0

像拉吉說,我建議打開連接,只要你有運行語句,然後再次關閉它之後 - 這是應該做的數據庫查詢的最常見的方式。這就是說,如果您希望始終打開一個連接,您應該在程序退出時關閉它(或者在網站的情況下,關閉應用程序關閉,卸載和關閉Global.Asax類似的(不記得有多少,因爲我從來沒有做這種方式)

你的web.config不會自動關閉它!

有了這一切說,我仍然認爲你應該考慮像建設取而代之(僞代碼):

using (var conn = OpenConnection()) 
{ 
    using (var cmd = CreateCommand(conn)) 
    { 
     RunQuery(); 
    } 
} 

當您將Connection和Command放入使用語句中時,它們將被正確關閉(包括您的連接),並且在您的代碼中出現異常情況下,您不會冒數據庫服務器上存在死連接的風險。

顯然一個try-finally建設將做同樣的,用的就是剛剛:-)