我有一个简单的应用程序,需要执行某些查询来获取数据库模式信息。我写了一个简单的方法,执行查询并返回阅读器,类似于-
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在处理时直接为您关闭连接,当连接是在本地创建的,就像您使用命令一样,而不是从外部传递时,这很有用。