我继承了典型的查询执行模式是像这样:是否IDataReader.Dispose()关闭连接?
using (IDataReader r = query.ExecuteReader())
{
while (r.Read())
{
// etc.
}
}
是query.Connection
敞开的using
块退出后?
我继承了典型的查询执行模式是像这样:是否IDataReader.Dispose()关闭连接?
using (IDataReader r = query.ExecuteReader())
{
while (r.Read())
{
// etc.
}
}
是query.Connection
敞开的using
块退出后?
否;直到您处理连接后,连接才会关闭。
但是,如果您通过CommandBehavior.CloseConnection
,连接将被关闭。
ExecuteReader(CommandBehavior.CloseConnection)
这将关闭连接则当DataReader有它叫close()
方法(当dispose()
方法是通过using
块的使用所谓的发生。
理想情况下,你可以使用一个using
块与SqlConnection
对象(或者在finally
块内手动调用dispose()
),而不仅仅是关闭连接,还可以释放资源。
可以在'while后面加上'r.Close();' {}'指令? – DanielV
发现它[检索数据使用DataReader(ADO.NET)](https://msdn.microsoft.com/en-us/library/haa3afyz(VS.100).aspx)愚蠢的问题虽然 – DanielV