ExecuteScalarse utiliza normalmente cuando su consulta devuelve un solo valor. Si devuelve más, el resultado es la primera columna de la primera fila. Un ejemplo podría ser SELECT @@IDENTITY AS 'Identity'.
ExecuteReaderse utiliza para cualquier conjunto de resultados con varias filas / columnas (por ejemplo, SELECT col1, col2 from sometable).
ExecuteNonQuery se utiliza normalmente para sentencias SQL sin resultados (por ejemplo, ACTUALIZAR, INSERTAR, etc.)
ExecuteScalar será el tipo de consulta que devolverá un valor único.
Un ejemplo sería devolver una identificación generada después de insertar.
INSERT INTO my_profile (Address) VALUES ('123 Fake St.');
SELECT CAST(scope_identity() AS int)
ExecuteReader le devuelve un lector de datos que le permitirá leer todas las columnas de los resultados una fila a la vez.
Un ejemplo sería extraer información de perfil para uno o más usuarios.
SELECT * FROM my_profile WHERE id = '123456'
ExecuteNonQuery es cualquier SQL que no devuelve valores, pero en realidad está realizando algún tipo de trabajo como insertar, borrar o modificar algo.
Un ejemplo sería actualizar el perfil de un usuario en la base de datos.
UPDATE my_profile SET Address = '123 Fake St.' WHERE id = '123456'
Parece que puede usar ExecuteReader para hacer los trabajos realizados por ExecuteScalar y ExecuteNonQuery, entonces, ¿por qué usar los otros dos? algún beneficio de rendimiento?
user20358
Una razón para evitar el uso excesivo de ExecuteReader es que mantendrá al lector cerca hasta que haya terminado con él. Con todos estos, desea conocer información específica sobre cómo funcionan para poder utilizarlos de la manera más eficaz. Lo que he descrito aquí son algunas buenas pautas.
Brendan Enrick
9
De los documentos (nota: MSDN es un recurso útil cuando quieres saber qué hacen las cosas):
Utilice el método ExecuteScalar para recuperar un valor único (por ejemplo, un valor agregado) de una base de datos. Esto requiere menos código que usar el método ExecuteReader y luego realizar las operaciones que necesita para generar el valor único usando los datos devueltos por un SqlDataReader.
Puede usar ExecuteNonQuery para realizar operaciones de catálogo (por ejemplo, consultar la estructura de una base de datos o crear objetos de base de datos como tablas), o para cambiar los datos en una base de datos sin usar un DataSet ejecutando declaraciones UPDATE, INSERT o DELETE.
ExecuteScalar devuelve conceptualmente la columna más a la izquierda de la primera fila del conjunto de resultados de la consulta; podría ExecuteScalar un SELECT * FROM staff, pero solo obtendría la primera celda de las filas resultantes Normalmente se usa para consultas que devuelven un solo valor. No estoy 100% seguro de SQLServer, pero en Oracle, no lo haría usaría para ejecutar una FUNCIÓN (un código de base de datos que devuelve un valor único) y esperaría que le dé el valor de retorno de la función aunque las funciones devuelvan valores únicos. Sin embargo, si está ejecutando la función como parte de una consulta, por ejemplo, SELECT SUBSTR ('abc', 1, 1) FROM DUAL, entonces daría el valor de retorno en virtud del hecho de que el valor de retorno se almacena en la parte superior izquierda celda del conjunto de filas resultante
ExecuteNonQuery se usaría para ejecutar procedimientos almacenados de la base de datos, funciones y consultas que modifican datos (INSERT / UPDATE / DELETE) o modifican la estructura de la base de datos (CREATE TABLE ...). Normalmente, el valor de retorno de la llamada es una indicación de cuántas filas se vieron afectadas por la operación, pero consulte la documentación de la base de datos para garantizar esto.
ExecuteReader() ejecuta una consulta SQL que devuelve el objeto DBDataReader del proveedor de datos que proporciona acceso de solo lectura y reenvío para el resultado de la consulta.
ExecuteScalar()es similar al ExecuteReader()método diseñado para consultas de singleton, como obtener un recuento de registros.
ExecuteNonQuery() ejecutar una consulta que no funcione con crear, eliminar, actualizar, insertar)
Este método ExecuteNonQuery se utilizará solo para insertar, actualizar y eliminar, crear y establecer instrucciones. El método ExecuteNonQuery devolverá el número de filas efectuadas con las operaciones INSERT, DELETE o UPDATE.
Ejecutar Escalar
Es muy rápido recuperar valores individuales de la base de datos. Execute Scalar devolverá un valor de una sola columna de una sola fila, es decir, un valor único, al ejecutar una consulta SQL o un procedimiento almacenado utilizando el objeto de comando.
ExecuteReader
Execute Reader se utilizará para devolver el conjunto de filas, en la ejecución de la consulta SQL o el procedimiento almacenado utilizando el objeto de comando. Este es solo una recuperación de registros hacia adelante y se usa para leer los valores de la tabla desde el primero hasta el último.
El método ExecuteNonQuery devolverá el número de filas efectuadas con las operaciones INSERT, DELETE o UPDATE. Este método ExecuteNonQuery se utilizará solo para insertar, actualizar y eliminar, crear y establecer instrucciones. (Lee mas)
ExecuteScalar devolverá el valor de una sola fila y una sola columna, es decir, un valor único, en la ejecución de una consulta SQL o un procedimiento almacenado utilizando el objeto de comando. Es muy rápido recuperar valores individuales de la base de datos. (Lee mas)
ExecuteReader se utilizará para devolver el conjunto de filas, en la ejecución de la consulta SQL o el procedimiento almacenado utilizando el objeto de comando. Este es solo una recuperación de registros hacia adelante y se usa para leer los valores de la tabla desde el primero hasta el último. (Lee mas)
Respuestas:
ExecuteScalar
se utiliza normalmente cuando su consulta devuelve un solo valor. Si devuelve más, el resultado es la primera columna de la primera fila. Un ejemplo podría serSELECT @@IDENTITY AS 'Identity'
.ExecuteReader
se utiliza para cualquier conjunto de resultados con varias filas / columnas (por ejemplo,SELECT col1, col2 from sometable
).ExecuteNonQuery
se utiliza normalmente para sentencias SQL sin resultados (por ejemplo, ACTUALIZAR, INSERTAR, etc.)fuente
ExecuteNonQuery
puede devolver el número de filas afectadas.ExecuteNonQuery ():
ExecuteReader ():
ExecuteScalar ():
URL de referencia:
http://nareshkamuni.blogspot.in/2012/05/what-is-difference-between.html
fuente
Cada uno es un tipo de ejecución diferente.
ExecuteScalar será el tipo de consulta que devolverá un valor único.
Un ejemplo sería devolver una identificación generada después de insertar.
INSERT INTO my_profile (Address) VALUES ('123 Fake St.'); SELECT CAST(scope_identity() AS int)
ExecuteReader le devuelve un lector de datos que le permitirá leer todas las columnas de los resultados una fila a la vez.
Un ejemplo sería extraer información de perfil para uno o más usuarios.
SELECT * FROM my_profile WHERE id = '123456'
ExecuteNonQuery es cualquier SQL que no devuelve valores, pero en realidad está realizando algún tipo de trabajo como insertar, borrar o modificar algo.
Un ejemplo sería actualizar el perfil de un usuario en la base de datos.
UPDATE my_profile SET Address = '123 Fake St.' WHERE id = '123456'
fuente
De los documentos (nota: MSDN es un recurso útil cuando quieres saber qué hacen las cosas):
Ejecutar Escalar
ExecuteReader
... y de SqlDataReader ...
ExecuteNonQuery
fuente
Para agregar a lo que otros publicaron:
ExecuteScalar devuelve conceptualmente la columna más a la izquierda de la primera fila del conjunto de resultados de la consulta; podría ExecuteScalar un SELECT * FROM staff, pero solo obtendría la primera celda de las filas resultantes Normalmente se usa para consultas que devuelven un solo valor. No estoy 100% seguro de SQLServer, pero en Oracle, no lo haría usaría para ejecutar una FUNCIÓN (un código de base de datos que devuelve un valor único) y esperaría que le dé el valor de retorno de la función aunque las funciones devuelvan valores únicos. Sin embargo, si está ejecutando la función como parte de una consulta, por ejemplo, SELECT SUBSTR ('abc', 1, 1) FROM DUAL, entonces daría el valor de retorno en virtud del hecho de que el valor de retorno se almacena en la parte superior izquierda celda del conjunto de filas resultante
ExecuteNonQuery se usaría para ejecutar procedimientos almacenados de la base de datos, funciones y consultas que modifican datos (INSERT / UPDATE / DELETE) o modifican la estructura de la base de datos (CREATE TABLE ...). Normalmente, el valor de retorno de la llamada es una indicación de cuántas filas se vieron afectadas por la operación, pero consulte la documentación de la base de datos para garantizar esto.
fuente
ExecuteReader()
ejecuta una consulta SQL que devuelve el objeto DBDataReader del proveedor de datos que proporciona acceso de solo lectura y reenvío para el resultado de la consulta.ExecuteScalar()
es similar alExecuteReader()
método diseñado para consultas de singleton, como obtener un recuento de registros.ExecuteNonQuery()
ejecutar una consulta que no funcione con crear, eliminar, actualizar, insertar)fuente
ExecuteNonQuery
Este método ExecuteNonQuery se utilizará solo para insertar, actualizar y eliminar, crear y establecer instrucciones. El método ExecuteNonQuery devolverá el número de filas efectuadas con las operaciones INSERT, DELETE o UPDATE.
Ejecutar Escalar
Es muy rápido recuperar valores individuales de la base de datos. Execute Scalar devolverá un valor de una sola columna de una sola fila, es decir, un valor único, al ejecutar una consulta SQL o un procedimiento almacenado utilizando el objeto de comando. ExecuteReader
Execute Reader se utilizará para devolver el conjunto de filas, en la ejecución de la consulta SQL o el procedimiento almacenado utilizando el objeto de comando. Este es solo una recuperación de registros hacia adelante y se usa para leer los valores de la tabla desde el primero hasta el último.
fuente
El método ExecuteNonQuery devolverá el número de filas efectuadas con las operaciones INSERT, DELETE o UPDATE. Este método ExecuteNonQuery se utilizará solo para insertar, actualizar y eliminar, crear y establecer instrucciones. (Lee mas)
ExecuteScalar devolverá el valor de una sola fila y una sola columna, es decir, un valor único, en la ejecución de una consulta SQL o un procedimiento almacenado utilizando el objeto de comando. Es muy rápido recuperar valores individuales de la base de datos. (Lee mas)
ExecuteReader se utilizará para devolver el conjunto de filas, en la ejecución de la consulta SQL o el procedimiento almacenado utilizando el objeto de comando. Este es solo una recuperación de registros hacia adelante y se usa para leer los valores de la tabla desde el primero hasta el último. (Lee mas)
fuente
ExecuteNonQuery: se usa generalmente cuando no se devuelve nada de las declaraciones Sql como operaciones de inserción, actualización y eliminación.
ExecuteScalar:
Se utilizará cuando la consulta SQL devuelva un valor único.
ExecuteReader
Se utilizará cuando la consulta Sql o el procedimiento almacenado devuelvan varias filas / columnas
para obtener más información, puede hacer clic aquí http://www.dotnetqueries.com/Article/148/-difference-between-executescalar-executereader-executenonquery
fuente