ExecuteScalar()
是否比ExecuteReader()
有任何优势?
最佳答案
ExecuteScalar
仅返回数据集第一行中的第一个值。在内部将其像ExecuteReader()
一样对待,打开DataReader
,选择值,然后销毁DataReader
。我也一直想知道这种行为,但是它有一个优点:它发生在框架内...而且您无法以速度的方式与框架竞争。
由rwwilden编辑:
看看SqlCommand.ExecuteScalar()
中的Reflector,您会看到以下几行:
SqlDataReader ds = this.RunExecuteReader(
CommandBehavior.Default, RunBehavior.ReturnImmediately, true, "ExecuteScalar");
obj2 = this.CompleteExecuteScalar(ds, false);
确实是
ExecuteReader
内部发生了什么。另一个优点是,当没有数据被读取时,ExecuteScalar
返回null
。如果使用ExecuteReader
,则必须自己检查。