[英]Data reader in command using statement
我有一個舊系統,我注意到以下代碼
var dataTable = new DataTable();
using(var connection = new SqlConnection())
using(var command = connection.CreateCommand())
{
command.commandType = CommandType.StoredProcedure;
//Attach command parameters etc.
var reader = command.ExecuteReader();
dataTable.Load(reader);
}
return dataTable;
通常,我會將數據讀取器包裝到using語句中,這樣行將顯示為:
using(var reader = command.ExecuteReader())
{
dataTable.Load(reader);
}
我想我會安排時間來更新這些方法,以包括數據讀取器的using語句,但是我想知道是否有人知道在上面的實例中,當命令或連接被處置了嗎?
您必須自己做,因為該命令不會為您清除DataReader
。 參見示例SqlCommand.Dispose
。
由於DataTable.Load
不會保留對所用DataReader
的引用,因此在這種情況下可以使用using
。 作為證明,請參見DataTable
的參考源 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.