使用ExecuteScalar()会导致使用“默认”CommandBehaviour调用ExecuteReader()?

时间:2011-02-28 20:22:46

标签: executescalar executereader

堆栈跟踪显示ExecuteReader是ExecuteScalar的基础方法。为相关命令行开挖,我发现下面的帖子 - 说明了readbehaviour.default被读者使用。

Does ExecuteScalar() have any advantages over ExecuteReader()?

我知道连接总是可以使用datareader.close(),datareader.dispose()显式关闭和处理 - 提供,使用ExecuteReader(commandbehaviour.Closeconnection)。另一方面,即使关闭和/或处置datareader对象,ExecuteReader(CommandBehaviour.Default)也保持底层连接打开。所以我的问题是,如果executioncalar使用Default行为,那么一旦检索到标量值,我如何确保底层连接被关闭?

1 个答案:

答案 0 :(得分:1)

C#using语句是该语言中包含的最好的东西之一。它并没有直接解决你的问题,但是如果你习惯使用它来包装SQLConnections(以及任何其他实现IDisposable的类型),你就不必担心很多这类事情了...... / p>

using(SQLConnection connection = new SQLConnection(...))
{
}