3

私が継承した典型的なクエリ実行パターンは次のようになります。

using (IDataReader r = query.ExecuteReader())
{
  while (r.Read())
  {
    // etc.
  }
}

ブロックが終了query.Connectionした後、開いたままになりますか?using

4

2 に答える 2

6
ExecuteReader(CommandBehavior.CloseConnection)

これは、データリーダーがそのメソッドを呼び出したときに接続を閉じます(これは、ブロックの使用を通じてメソッドが呼び出されclose()たときに発生します。dispose()using

理想的には、接続を閉じるだけでなく、リソースを解放するためにも、オブジェクトでusingブロックを使用する (またはブロック内で手動でSqlConnection呼び出す) ことをお勧めします。dispose()finally

于 2013-06-12T20:25:10.283 に答える
5

いいえ; 接続を破棄するまで、接続は閉じられません。

ただし、 を渡すCommandBehavior.CloseConnectionと、接続が閉じられます。

于 2013-06-12T20:24:03.043 に答える