c# - Cuándo usar ExecuteScalar, ExecuteReader, ExecuteNonQuery?
vb.net (5)
Estoy confundido con el uso de
- Artículo de lista
- ExecuteScalar,
- ExecuteReader,
- 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 )
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''");