我繼承了典型的查詢執行模式是像這樣:是否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