2013-04-23 37 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(); 
} 
相关问题