7

我有一个简单的应用程序,需要执行某些查询来获取数据库模式信息。我写了一个简单的方法来执行查询并返回一个阅读器,就像这样 -

public static DbDataReader ExecuteQuery(DbConnection connection,string sql)
{
   DbCommand command = connection.CreateCommand();
   command.CommandText = sql;

   using(command)
   {
      return command.ExecuteReader();    
   }
}

调用代码确实关闭了连接并适当地配置了阅读器和连接。

我的问题 - 在迭代阅读器之前处理命令实例(通过 using 块完成)是否可以/正确?我不希望在关闭阅读器后填充任何 OUT 参数。ADO.NET API 对此是否有任何严格的指导方针?

4

1 回答 1

0

当您在方法命令中离开 using 块时,命令已关闭并处置,如果您能够使用调用者的阅读器,则意味着它仍然可以工作。

命令是针对连接执行语句的一种手段,但不保存任何数据,这就是它起作用的原因。只要连接打开,您就可以使用您的阅读器。

PS。还有一个很好的 ExecuteReader 重载,它指示 Reader 在处理时直接为您关闭连接,这在像使用命令一样在本地创建连接而不是从外部传递时很有用。

于 2011-10-21T07:00:37.637 回答