No; the connection will not be closed until you dispose the connection.
However, if you pass CommandBehavior.CloseConnection
, the connection will be closed.
Question
The typical query execution pattern I inherited is like so:
using (IDataReader r = query.ExecuteReader())
{
while (r.Read())
{
// etc.
}
}
Is query.Connection
left open after the using
block is exited?
Solution 2
No; the connection will not be closed until you dispose the connection.
However, if you pass CommandBehavior.CloseConnection
, the connection will be closed.
OTHER TIPS
ExecuteReader(CommandBehavior.CloseConnection)
This will close the connection when the datareader has it's close()
method called (which occurs when the dispose()
method is called through usage of the using
block.
Ideally, you would use a using
block with your SqlConnection
object as well (or call dispose()
manually inside a finally
block), not just to close the connection, but also to release the resources.