2013-04-23 70 views
0

我有一個ASP.NET網頁。它使用4 BackgroundWorkers。每個bw從數據庫中檢索一些數據。ExecuteReader需要一個開放且可用的Connection。連接的當前狀態正在連接

用於連接到數據庫中的代碼是:

if (dbConnection.State == ConnectionState.Closed) 
{ 
    dbConnection.Open(); 
}  
DataTable dt = new DataTable(); 
OdbcCommand cmd = new OdbcCommand(sqlQuery, dbConnection); 
cmd.CommandTimeout = 0; 
IDataReader dataReader = cmd.ExecuteReader(); 
dt.Load(dataReader); 
dataReader.Close(); 
dataReader.Dispose(); 

在構造,this.dbConnection = new OdbcConnection(networkdetails);

每個BW利用上面的代碼片段的查詢數據庫和檢索的值。代碼有時候工作得很好。其他時候它拋出上面給出的例外。

對我可能做錯什麼有幫助?

+0

爲什麼在一個頁面上需要4個後臺工作者?在asp.net中這不是一種常見的做法,可能會導致很多問題。 – nunespascal 2013-04-23 06:19:59

+1

你可以使用if(Connection.State!= ConnectionState.Open) Connection.Open();有時連接狀態可能會導致問題。嘗試這樣。 – MahaSwetha 2013-04-23 06:32:24

+0

什麼是例外,你得到它? – MahaSwetha 2013-04-23 06:33:00

回答

0

嘗試處理異常,然後關閉連接。

爲此,在'Try'塊中編寫代碼,捕獲'Catch'塊中的異常並關閉'Finally'塊中的連接。

try{ 
     // Your code 
} 
catch 
{ 
     // Catch exception 
} 
Finally 
{ 
     // Close the connection 
     dbConnection.Close(); 
} 
相關問題