gpt4 book ai didi

c# - 在迭代 DbDataReader 之前处理 DbCommand 是否可以

转载 作者:太空狗 更新时间:2023-10-29 22:01:36 26 4
gpt4 key购买 nike

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

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

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

调用代码确实关闭了连接并适本地处理了阅读器和连接。

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

最佳答案

当您在方法命令中离开 using block 时,命令将被关闭和释放,如果您能够使用来自调用者的读取器,则意味着它仍然有效。

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

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

关于c# - 在迭代 DbDataReader 之前处理 DbCommand 是否可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7845928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com