Does ExecuteScalar() have any advantages over ExecuteReader()?
c#
Solution
`ExecuteScalar` only returns the first value from the first row of the dataset. Internal it is treated just like `ExecuteReader()`, a `DataReader` is opened, the value is picked and the `DataReader` gets destroyed afterwards. I also always wondered about that behavior, but it has one advantage: It takes place within the Framework...and you can't compete with the Framework in manners of speed.
Edit By rwwilden: Taking a look with Reflector inside `SqlCommand.ExecuteScalar()` you can see these lines:
SqlDataReader ds = this.RunExecuteReader(
CommandBehavior.Default, RunBehavior.ReturnImmediately, true, "ExecuteScalar");
obj2 = this.CompleteExecuteScalar(ds, false);
Exactly what happens inside `ExecuteReader`. Another advantage is that `ExecuteScalar` returns `null` when no data is read. If you use `ExecuteReader`, you'd have to check this yourself.
Problem
Does `ExecuteScalar()` have any advantages over `ExecuteReader()`?