我通常这样编写我的DataReader
代码:
try
{
dr = cmd.ExecuteReader(CommandBehavior.SingleResult);
while (dr.Read())
{
// Do stuff
}
}
finally
{
if (dr != null) { dr.Close(); }
}
使用
using
块替换try
和finally
是否安全,这样可以围绕DataReader
的创建?我想知道的原因是因为在所有我看到的Microsoft示例中,他们都对连接使用using
,但总是显式调用Close()
来关闭DataReader
。以下是来自Retrieving Data Using a DataReader(ADO.NET)的示例:
static void HasRows(SqlConnection connection)
{
using (connection)
{
SqlCommand command = new SqlCommand(
"SELECT CategoryID, CategoryName FROM Categories;",
connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
Console.WriteLine("{0}\t{1}", reader.GetInt32(0),
reader.GetString(1));
}
}
else
{
Console.WriteLine("No rows found.");
}
reader.Close();
}
}
using
块是否会关闭数据读取器,而另一个问题则问是否需要关闭它。两者并不相同。 - Shadow The Spring Wizard