SqlDataAdapter en ADO.
NET
Definición
SqlDataAdapter es una clase fundamental dentro de [Link] que actúa como un puente
entre una base de datos y los objetos en memoria como DataSet y DataTable. Permite llenar
estructuras en memoria con datos provenientes de una base de datos y también sincronizar
los cambios realizados en memoria de vuelta a la base de datos. Funciona en conjunto con
SqlConnection y SqlCommand para ejecutar comandos SQL como SELECT, INSERT, UPDATE
y DELETE. SqlDataAdapter es especialmente útil en escenarios desconectados, donde se
requiere manipular datos sin mantener una conexión constante con la base de datos.
Características principales
- Permite llenar (Fill) un DataSet o DataTable con datos desde la base de datos.
- Actualiza la base de datos con los cambios realizados en memoria mediante el método
Update.
- Utiliza comandos SqlCommand para definir las operaciones SELECT, INSERT, UPDATE y
DELETE.
- Facilita el trabajo desconectado, ideal para aplicaciones distribuidas o con conectividad
intermitente.
- Compatible con múltiples tipos de datos y estructuras relacionales.
- Puede trabajar con parámetros para consultas seguras y dinámicas.
Ventajas
- Reduce la necesidad de mantener conexiones abiertas constantemente, lo que mejora el
rendimiento y escalabilidad.
- Permite manipular los datos en memoria antes de sincronizarlos con la base de datos.
- Facilita la implementación de patrones de arquitectura como el patrón desconectado.
- Mejora la seguridad al permitir el uso de parámetros en las consultas.
- Compatible con operaciones de lectura y escritura masiva.
Casos de uso en procesos ETL
SqlDataAdapter es una herramienta clave en procesos ETL (Extracción, Transformación y
Carga) dentro de aplicaciones .NET. Durante la fase de extracción, se utiliza para llenar un
DataSet con datos desde una fuente relacional. En la fase de transformación, los datos
pueden ser manipulados en memoria utilizando DataTable, DataView o LINQ. Finalmente,
en la fase de carga, SqlDataAdapter puede sincronizar los cambios realizados en memoria
con la base de datos original, utilizando el método Update junto con comandos INSERT,
UPDATE y DELETE definidos previamente.
Sincronización de datos
SqlDataAdapter permite sincronizar los cambios realizados en un DataTable o DataSet con
la base de datos mediante el método Update. Para ello, es necesario definir los comandos
SqlCommand correspondientes a las operaciones de inserción, actualización y eliminación.
El adaptador detecta los cambios en las filas del DataTable (agregadas, modificadas o
eliminadas) y ejecuta el comando adecuado para cada caso. Esto permite mantener la
coherencia entre los datos en memoria y los datos persistidos en la base de datos.
Ejemplo en C#
El siguiente ejemplo muestra cómo utilizar SqlDataAdapter para cargar datos desde una
base de datos, modificar los datos en memoria y luego sincronizarlos:
using System;
using [Link];
using [Link];
class EjemploSqlDataAdapter {
static void Main() {
string cadenaConexion =
"Server=.;Database=EjemploDB;Trusted_Connection=True;";
using (SqlConnection conexion = new
SqlConnection(cadenaConexion)) {
SqlDataAdapter adaptador = new SqlDataAdapter("SELECT Id,
Nombre, Edad FROM Personas", conexion);
SqlCommandBuilder constructor = new
SqlCommandBuilder(adaptador);
DataSet ds = new DataSet();
[Link](ds, "Personas");
// Modificar datos en memoria
DataTable tabla = [Link]["Personas"];
DataRow nuevaFila = [Link]();
nuevaFila["Nombre"] = "Carlos";
nuevaFila["Edad"] = 28;
[Link](nuevaFila);
// Sincronizar con la base de datos
[Link](ds, "Personas");
[Link]("Datos sincronizados exitosamente.");
}
}
}