Bob*_*bby 28
ExecuteScalar
仅返回数据集第一行的第一个值.内部它被处理就像ExecuteReader()
,a DataReader
被打开,价值被挑选然后DataReader
被摧毁.我也总是想知道这种行为,但它有一个优点:它发生在框架内......你不能以速度的方式与框架竞争.
编辑rwwilden:
看看里面的Reflector SqlCommand.ExecuteScalar()
你可以看到这些线:
SqlDataReader ds = this.RunExecuteReader(
CommandBehavior.Default, RunBehavior.ReturnImmediately, true, "ExecuteScalar");
obj2 = this.CompleteExecuteScalar(ds, false);
Run Code Online (Sandbox Code Playgroud)
究竟里面发生了什么ExecuteReader
.另一个优点是在没有数据读取时ExecuteScalar
返回null
.如果你使用ExecuteReader
,你必须自己检查.
Adr*_*der 14
使用ExecuteScalar方法从数据库中检索单个值(例如,聚合值). 这比使用ExecuteReader方法所需的代码少,然后使用SqlDataReader返回的数据执行生成单个值所需的操作.
另外,ExecuteReader,ExecuteNonQuery和ExecuteScalar之间有什么区别