c# vb.net

c# - Cuándo usar ExecuteScalar, ExecuteReader, ExecuteNonQuery?



vb.net (5)

Estoy confundido con el uso de

  1. Artículo de lista
  2. ExecuteScalar,
  3. ExecuteReader,
  4. ExecuteNonQuery

Cuándo usar estos métodos?


Cuál es la diferencia entre ExecuteReader, ExecuteNonQuery y ExecuteScalar

ExecuteNonQuery

El método ExecuteNonQuery devolverá el número de filas efectuadas con las operaciones INSERT, DELETE o UPDATE. Este método ExecuteNonQuery se usará solo para insertar, actualizar y eliminar, crear y establecer sentencias. (Leer más sobre ExecuteNonQuery)

SqlCommand.ExecuteNonQuery Documentación de MSDN

ExecuteReader

Execute Reader se usará para devolver el conjunto de filas, en la ejecución de SQL Query o el procedimiento almacenado utilizando el objeto de comando. Éste es solo la recuperación de registros hacia adelante y se usa para leer los valores de la tabla desde el principio hasta el final. (Leer más sobre ExecuteReader)

SqlCommand.ExecuteReader MSDN Documentation

Ejecutar escalar

Execute Scalar devolverá el valor de una sola fila de una sola columna, es decir, un valor único, en la ejecución de SQL Query o procedimiento almacenado utilizando el objeto de comando. Es muy rápido recuperar valores individuales de la base de datos. ( Lea más acerca de Execute Scalar )

SqlCommand.ExecuteScalar MSDN Documentation


Básicamente, esto se simplifica, pero puede buscar cada uno de los términos SQL o objetos .net o leer acerca de ADO.net en MSDN para obtener más información.

ExecuteScalar cuando llame a una función escalar SQL que solo devuelve un solo número.

ExecuteReader cuando realiza una llamada SQL que devolverá un conjunto de registros de una tabla, lo que le proporciona un objeto SqlDataReader para recuperar los datos en C #.

ExecuteNonQuery se usa cuando no hay ningún valor de retorno de ningún tipo esperado de SQL Server, un ejemplo es una simple instrucción UPDATE.


Use ExecuteScalar cuando su consulta devuelve un solo valor. Si devuelve más resultados, entonces el resultado final es la primera columna de la primera fila. Un ejemplo podría ser SELECT Count(*) from MyTable

Use ExecuteReader para obtener el conjunto de resultados con varias filas / columnas (por ejemplo, SELECT col1, col2 from MyTable .

Use ExecuteNonQuery para declaraciones de SQL que no recuperarán los resultados de la base de datos, pero realizarán la actualización en la base de datos existente (por ejemplo, UPDATE, INSERT, etc.).


ExecuteScalar () solo devuelve el valor de la primera columna de la primera fila de su consulta.
ExecuteReader () devuelve un objeto que puede iterar en todo el conjunto de resultados y solo mantiene un registro en la memoria a la vez.
ExecuteNonQuery () no devuelve datos: solo el número de filas afectadas por una inserción, actualización o eliminación.

Además, puede mirar el tipo DbDataAdapter , que incluye un método Fill () que le permite descargar todo el conjunto de resultados en un objeto DataTable o DataSet , así como una serie de otras habilidades.

Finalmente, este parece ser un buen momento para que se familiarice con MSDN . Para eso está hecha la documentación: tiene los nombres de los métodos. Ve a buscarlos.


ExecuteScalar : para valor único

Int32 Value = Convert.ToInt32(ExecuteScalar("SELECT SUM(COLUMNNAME) FROM TABLE")); Int32 Value = Convert.ToInt32(ExecuteScalar("SELECT AVG(COLUMNNAME) FROM TABLE"));

ExecuteReader : Lectura de filas en modo avance

IdataReader dr = ExecuteReader("SELECT * FROM TABLE"); while(dr.Read()) { //You will get rows values like this dr["ColumnName"] }

ExecuteNonQuery : para insertar / eliminar / actualizar las filas en la tabla

ExecuteNonQuery("DELETE FROM TABLE"); ExecuteNonQuery("UPDATE TABLE SET COLUMNNAME = ''A''");