0

それは非常に簡単な質問です..以下のコードに基づいて知りたい..接続が閉じられてからリターンエステートが実行されますか、それとも接続を閉じずにリターンエステートが実行されますかCommandBehavior..接続ですが、接続はまったく閉じないと思います..そうですか?

using (var con = new SqlConnection(_constr))
        {
            con.Open();
            var cmd = new SqlCommand(cmdstr, con);
            var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            if (reader.Read())
                return Convert.ToInt32(reader["persianDate"].ToString());
        }
4

2 に答える 2

3

関連する DataReader オブジェクトが閉じられると、関連する Connection オブジェクトが閉じられます。

戻る前にデータリーダーを閉じていないため、使用に影響はありませんCommandBehavior.CloseConnectionが、usingブロックは接続を閉じます。

両方にusingブロックを追加しますSqlCommandReader

using (var con = new SqlConnection(_constr))
using (var cmd = new SqlCommand(cmdstr, con))
{
    con.Open();
    using (var reader = cmd.ExecuteReader())
    {
        if (reader.Read())
            return Convert.ToInt32(reader["persianDate"].ToString());
    }
}
于 2013-10-23T06:39:57.863 に答える
1

閉店いたします。呼び出しDisposeを暗黙的に呼び出すと、ステートメントを使用するためSqlConnection、ブロックの最後で常に呼び出されることが保証されます。CloseusingDispose

于 2013-10-23T06:38:22.980 に答える