Contenido del Curso
Introducción a .NET con C#
Introducción a .NET con C#
DataReader vs. DataSet
En la sección anterior, utilizamos el objeto MySqlDataReader
para leer datos de la base de datos.
En teoría, DataReader (o MySqlDataReader
) no recupera todos los datos al ejecutar una consulta. En su lugar, recupera los datos de manera secuencial, lo que significa que obtiene una fila a la vez. Cuando se ejecuta el método Read(), recupera la siguiente fila de la base de datos en tiempo real.
Por esta razón, se requiere una conexión activa a la base de datos mientras se recuperan los datos. Esto también explica por qué es necesario cerrar el objeto DataReader después de recuperar los datos.
Por otro lado, existe otro método para recuperar datos, que es a través de un DataAdapter. Un DataAdapter obtiene los datos relevantes de la base de datos y llena un DataSet con los datos recuperados, creando esencialmente una copia de esos datos. Un DataSet es un tipo especial de clase para almacenar datos recuperados de una base de datos SQL. Se puede acceder y visualizar fácilmente los datos de un DataSet.
Aunque ambos métodos pueden parecer casi iguales, DataReader y DataSet presentan diferencias significativas:
Uso de memoria y almacenamiento:
DataReader recupera los datos de la base de datos un registro a la vez y mantiene una conexión abierta mientras lee los datos. No almacena los datos en memoria. Esto resulta en un uso mínimo de memoria;
DataSet almacena los datos recuperados de la base de datos en la memoria dentro de la aplicación.
Accesibilidad y navegación:
DataReader proporciona un flujo rápido y solo hacia adelante de datos. Permite el acceso secuencial a los datos y no admite el acceso aleatorio ni la navegación. Una vez que se lee un registro, no se puede volver a visitar a menos que se ejecute la consulta nuevamente;
DataSet permite iterar a través de las filas en cualquier orden y modificar los datos dentro del DataSet sin afectar los datos originales en la base de datos.
Acceso en tiempo real vs. acceso desconectado:
DataReader proporciona acceso en tiempo real a los datos desde la base de datos. Requiere una conexión activa a la base de datos mientras se leen los datos, y la conexión permanece abierta hasta que se han leído todos los datos o hasta que el DataReader se cierra explícitamente;
DataSet proporciona acceso desconectado a los datos. Una vez que los datos se recuperan de la base de datos y se almacenan en el DataSet, la conexión a la base de datos puede cerrarse. Los datos luego están disponibles dentro de la aplicación y pueden manipularse sin conexión sin mantener una conexión a la base de datos.
A partir de las ventajas y desventajas mencionadas anteriormente, se puede concluir que DataReader es adecuado para escenarios donde el acceso solo hacia adelante a los datos es suficiente, mientras que DataSet es más adecuado para escenarios donde se desea minimizar el tiempo de conexión y se necesita trabajar con los datos de forma interactiva.
1. ¿Cuál de las siguientes afirmaciones sobre DataReader es verdadera?
2. ¿Qué almacena DataSet en memoria?
¡Gracias por tus comentarios!