是否可以在迭代DbDataReader之前处理一个DbCommand ?



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

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

调用代码关闭连接并适当地处理读取器和连接。

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

当您离开方法命令中的using块时,如果您能够使用调用者的reader,则意味着它仍然有效。

命令是对连接执行语句的一种方法,但不保存任何数据,这就是为什么它可以工作的原因。只要连接是打开的,你就可以使用你的阅读器。

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

相关内容

  • 没有找到相关文章

最新更新