0

堆栈跟踪显示 ExecuteReader 是 ExecuteScalar 的底层方法。在挖掘相关的命令行为时,我发现下面的帖子 - 说明命令行为.default 由读者使用。

ExecuteScalar() 比 ExecuteReader() 有什么优势吗?

我知道始终可以使用 datareader.close()、datareader.dispose() 来关闭和显式处理连接——提供,使用 ExecuteReader(commandbehaviour.Closeconnection)。另一方面,ExecuteReader(CommandBehaviour.Default) 保持底层连接打开,即使数据读取器对象已关闭和/或处置。所以我的问题是,如果 executescalar 使用默认行为,我如何确保在检索到标量值后关闭底层连接?

4

1 回答 1

1

C# using 语句是该语言中包含的最好的东西之一。它不能直接解决您的问题,但是如果您养成使用它来包装 SQLConnections(以及实现 IDisposable 的任何其他类型)的标准习惯,您将不必担心很多此类事情......

using(SQLConnection connection = new SQLConnection(...))
{
}
于 2011-02-28T20:27:20.740 回答