我有以下對象:多用戶安全的SQL連接
public class DatabaseAccess
{
private static string sConnStr;
private static SqlConnection sqlConn;
private static string ConnectionString
{
get
{
if (String.IsNullOrEmpty(sConnStr))
{
sConnStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
}
return sConnStr;
}
}
public static int OpenConnection
{
get
{
sqlConn = new SqlConnection(ConnectionString);
return 0;
}
}
public static SqlConnection Connection
{
get
{
if (sqlConn.State != ConnectionState.Open)
{
sqlConn = new SqlConnection(ConnectionString);
sqlConn.Open();
}
return sqlConn;
}
}
}
所以每當我需要在我的web應用程序的連接,我使用類似:
DataTable dt = new DataTable();
using (SqlConnection cnn = DatabaseAccess.Connection)
{
using (SqlDataAdapter da = new SqlDataAdapter("MyAStoredProcedure", cnn))
{
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.Fill(dt);
}
}
return dt;
這一切似乎很好除了當有2個用戶同時運行代碼,我將在我的Web應用程序中得到以下錯誤:
已經有一個與此命令關聯的打開的DataReader需要關閉。
我需要一些建議如何解決上述問題?
謝謝。
創造
SqlConnection
一個新實例,你可以提供一個解釋,爲什麼你的'Connection'必須是'static'(這是你看到錯誤的原因)? –我有很多其他的數據庫操作,所以我只會使用相同的靜態連接。所以看起來這是錯誤的原因,那麼我怎樣才能很好地把它呢? –