我有以下方法:關閉SQL連接,但打開的連接不斷遞增
public DataSet GetDataSet(string sp, params SqlParameter[] parameters) {
DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(
ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString
)) {
using (SqlCommand cmd = new SqlCommand()) {
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = sp;
if (parameters != null) {
foreach (SqlParameter parm in parameters) {
cmd.Parameters.Add(parm);
}
}
if (conn.State == ConnectionState.Closed) {
conn.Open();
}
using (SqlDataAdapter da = new SqlDataAdapter(cmd)) {
da.Fill(ds);
}
}
}
return ds; }
我注意到,調用此方法多次(約50倍)時創建多個連接。 我已經在SQL執行這個查詢選中此:
SELECT DB_NAME(dbid) as 'DbNAme', COUNT(dbid) as 'Connections' from master.dbo.sysprocesses with (nolock) WHERE dbid > 0 GROUP BY dbid
連接的數量保持調用上述方法時遞增。它不應該一次又一次地使用相同的連接(連接池),而不是創建新的連接?
這是部分錯誤。使用語句將調用連接上的處置,並等同於Close方法。底層連接是否關閉取決於池:http://msdn.microsoft.com/en-us/library/sd2728ad(v=VS.100).aspx – 2011-05-18 10:28:38
從MSDN:「如果SqlConnection超出範圍,它不會被關閉,因此,你必須通過調用Close或Dispose來明確地關閉連接,Close和Dispose在功能上是等價的「 – 2011-05-18 10:33:10
你沒事。抱歉,不正確的答案! – Reniuz 2011-05-18 11:03:16