¿Tiene alguna ventaja ExecuteScalar()
sobre ExecuteReader()
?¿ExecuteScalar() tiene alguna ventaja sobre ExecuteReader()?
Respuesta
ExecuteScalar
solo devuelve el primer valor de la primera fila del conjunto de datos. Interna se trata como ExecuteReader()
, se abre DataReader
, se selecciona el valor y se destruye DataReader
después. También siempre me pregunté sobre ese comportamiento, pero tiene una ventaja: se lleva a cabo dentro del Marco ... y no se puede competir con el Marco de manera rápida.
Editar Por rwwilden: Echando un vistazo en el interior del reflector con SqlCommand.ExecuteScalar()
se puede ver estas líneas:
SqlDataReader ds = this.RunExecuteReader(
CommandBehavior.Default, RunBehavior.ReturnImmediately, true, "ExecuteScalar");
obj2 = this.CompleteExecuteScalar(ds, false);
exactamente lo que sucede en el interior ExecuteReader
. Otra ventaja es que ExecuteScalar
devuelve null
cuando no se leen datos. Si usa ExecuteReader
, tendrá que verificar esto usted mismo.
+1 para usar Reflector. – Steven
De SqlCommand.ExecuteScalar Method
Utilice el método ExecuteScalar a recuperar un solo valor (por ejemplo, un valor total) a partir de una base de datos. Esto requiere menos código que utiliza el método ExecuteReader, y luego realizar las operaciones que necesidad de generar el valor único utilizando los datos devueltos por un SqlDataReader .
También desde What is the difference between ExecuteReader, ExecuteNonQuery and ExecuteScalar
- ExecuteReader: se utiliza para acceder a los datos . Proporciona un conjunto de registros conectado de solo lectura, de solo lectura.
- ExecuteNonQuery: Usar para la manipulación de los datos , como Insertar, Actualizar, Borrar.
- ExecuteScalar: Se utiliza para recuperar 1 fila 1 col. valor., es decir, valor único. por ejemplo: para recuperar la función de agregado. Es más rápido que otras formas de recuperar un único valor de DB.
Cuando tiene un único valor devuelto de su consulta o SP, siempre es mejor utilizar ExecuteScalar() ya que recupera el primer valor del resultado. Por lo tanto, esto es más rápido en este tipo de situación.
Ejecutar Scalar destinado a obtener un único valor de la base de datos mientras Execute Reader para obtener múltiples registros en DataTable.
De ExecuteScalar página en MSDN:
Use the ExecuteScalar method to retrieve a single value (for example, an aggregate value) from a database. This requires less code than using the ExecuteReader method, and then performing the operations that you need to generate the single value using the data returned by a SqlDataReader
Por lo tanto, no es mejor o más rápido, pero se utiliza para reducir la cantidad de código escrito cuando sólo se necesita un valor.
ExecuteScalar() tomará menos recursos en comparación con el ExecuteReader() como más tarde devolverá los datos de múltiples columnas de la base de datos.
ExecuteReader() será instanciar el SqlDataReader que se basa corriente y consultar los resultados de la fuente de datos
- 1. ¿Cuál es la diferencia entre ExecuteScalar, ExecuteReader y ExecuteNonQuery?
- 2. ¿Cuándo tiene RAII una ventaja sobre GC?
- 3. ¿Alguna ventaja de los usos CHAR sobre VARCHAR?
- 4. ¿Alguna ventaja de pasar el mouse sobre mouseover en JQuery?
- 5. Navaja/CSHTML - ¿Alguna ventaja sobre lo que tenemos?
- 6. Ventaja de SessionStorage sobre Cookie
- 7. ¿Tiene node.js alguna ventaja de rendimiento sobre el Javascript del lado del cliente (frente a Chrome/V8)?
- 8. La ventaja de esta * * sobre event.target
- 9. ¿Hay alguna ventaja de usar C++/CLI sobre C++ estándar o C#?
- 10. Ventaja de IoC sobre mi Factory Singleton
- 11. Encoder personalizado base phpass 64: ¿tiene un nombre/ventaja sobre Base64?
- 12. ¿Hay alguna ventaja al usar AND y OR sobre && y || en PHP?
- 13. ¿Hay alguna ventaja al usar bloques sobre funciones en Objective-C?
- 14. Para un diccionario de Python, ¿iterkeys ofrece alguna ventaja sobre las teclas de acceso?
- 15. LINQ - Expresión fluida y de consulta: ¿hay alguna ventaja de una sobre otra?
- 16. ¿Por qué index.html tiene prioridad sobre index.php?
- 17. Ventaja de usar "x * = -1". sobre "x * = -1"?
- 18. ¿hay una ExecuteScalar en Dapper
- 19. ¿Hay alguna ventaja que podamos eliminar sin desconectar el gráfico?
- 20. ¿Cuál es la ventaja de usar varbinary sobre varchar aquí?
- 21. Ventaja del cambio sobre la instrucción if-else
- 22. ¿Cuál es la ventaja de UnityContainer.Resolve sobre Activator.CreateInstance?
- 23. Ventaja de macro sobre la línea en C++
- 24. ¿Cuál es la ventaja de CodeFirst sobre Database First?
- 25. ¿Cuál es la ventaja de usar filter_has_var() sobre isset()
- 26. SQLite ExecuteReader -> DataTable.Load -> FormatException (DateTime)
- 27. usando ExecuteReader en lugar de ExecuteNonQuery
- 28. ¿Hay alguna ventaja en agrupar consultas de medios css juntas?
- 29. ¿Hay alguna ventaja al usar selectores muy específicos en CSS?
- 30. ¿Hay alguna ventaja en compilar un ensamblaje como x64?
Scaler para recuperar los valores individuales, Reader para varios valores. –