を閉じていない - 私はDataReaderを充填.csファイルのページから呼び出す:渡すのDataReader - 私はクラスに次のメソッドを使用しCommandBehavior.CloseConnectionを使用しますが、接続
public static SqlDataReader getinfo(string username, string url)
{
//Initialise connection, string stored in Web.config
SqlConnection conNs = new SqlConnection(ConfigurationManager.ConnectionStrings["conNs"].ConnectionString);
SqlCommand cmdNs = new SqlCommand("usp_getinfo", conNs);
cmdNs.CommandType = CommandType.StoredProcedure;
cmdNs.Parameters.Add(new SqlParameter("@username", SqlDbType.VarChar, 50));
cmdNs.Parameters["@username"].Value = username;
cmdNs.Parameters.Add(new SqlParameter("@url", SqlDbType.VarChar, 50));
cmdNs.Parameters["@url"].Value = url;
//Execute Command
conNs.Open();
SqlDataReader dr = cmdNs.ExecuteReader(CommandBehavior.CloseConnection);
//Return data
return dr;
}
お知らせ「commendbehavior .closeconnection '。私はこのようにそれを呼び出すことは.csページで次に
:あまりにもなしの接続を閉じる必要があります
SqlDataReader drInfo = dataAccess.getinfo(username, url);
//do some stuff
drInfo.Close();
?
開いている接続でいっぱいになっているアプリケーションプールに問題があります。私のテクニックに問題はありますか?
スピードが優先されます。
おかげ
私はデータリーダーへの参照を渡すことをお勧めしません...私の意見では、データベースにクエリを行い、その結果を単一の結果オブジェクト(または結果オブジェクトのコレクション)に変換することをお勧めします。そのデータリーダー。例えばデータリーダの値をオブジェクトに読み込み、それらのオブジェクトを返す(データリーダ参照を渡す代わりに) –
あなたの入力に感謝します。私のコードで接続が閉じない理由は何ですか? –
スピード&シンプル。 –