Está en la página 1de 5

1.

El modo conectado

En el modo conectado, todos los formatos básicos de datos adoptan el mismo funcionamiento. Lo
ilustraremos con SQL Server, y para pasar a otros formatos bastará con cambiar el espacio de nombres y
modificar el prefijo de cada clase.

La siguiente tabla muestra los cambios necesarios:

Espacio de nombres Conexión Comando

SQL Server System.Data.SqlClient SqlConnection SqlCommand

Access System.Data.OleDB OleDBConnection OleDBCommand

Oracle System.Data.Oracle-Client OracleConnection OracleCommand

Las demás clases se nombran siguiendo el mismo principio.

a. La conexión

La conexión SqlConnection designa el canal por el que se intercambian las órdenes y los registros SQL.
Este canal lo programan...

En qué casos se debe usar un SqlCommand o un SqlDataAdapter;  Solo con el SqlDataAdapter pude
hacer una consulta general

Un SqlCommand se utiliza cuando necesitas ejecutar un tipo de sentencia Sql a la base de datos (los
tipos pueden ser: Delete, Update, Insert o Select). Por su parte el SqlDataAdapter se utiliza si requieres
ejecutar más de un tipo de sentencia Sql o si trabajarás en escenarios desconectados.
Ejemplo de SqlCommand:

1 public List Listar()


2 {
3     SqlConnection con = new SqlConnection(cadenaConexion);
4     SqlCommand com = new SqlCommand("LISTAR_CAMPANAS", con);
5     com.CommandType = System.Data.CommandType.StoredProcedure;
6  
7     con.Open();
8  
9     SqlDataReader drCampanas = com.ExecuteReader();
10     List listaCampanas = new List();
11  
12     while (drCampanas.Read())
13     {
14         listaCampanas.Add(Cargar(drCampanas));
15     }
16  
17     drCampanas.Close();
18     con.Close();
19     return listaCampanas;
20 }
Ejemplo de SqlDataAdapter (basado en el ejemplo anterior pero levemente modificado):

1 public List Listar()


2 {
3 SqlConnection con = new SqlConnection(cadenaConexion);
4 SqlCommand com = new SqlCommand("LISTAR_CAMPANAS", con);
5 com.CommandType = System.Data.CommandType.StoredProcedure;
6 SqlDataAdapter da = new SqlDataAdapter(com);
7 con.Open();
8  
9 SqlDataReader drCampanas = da.SelectCommand.ExecuteReader();
10 List listaCampanas = new List();
11  
12 while (drCampanas.Read())
13 {
14 listaCampanas.Add(Cargar(drCampanas));
15 }
16  
17 drCampanas.Close();
18 con.Close();
19 return listaCampanas;
20 }
En el ejemplo anterior se muestra como un SqlDataAdapter puede contener a un SqlCommand (llamado
«com» en el ejemplo) que representa una sentencia Select; de igual forma, se puede agregar comandos
que representen las sentencias Insert, Update y Delete utilizando sus respectivas propiedades:

1 SqlCommand dummyCommand = new SqlCommand();


2 da.UpdateCommand = dummyCommand;
3 da.DeleteCommand = dummyCommand;
4 da.InsertCommand = dummyCommand;
Si no necesitas trabajar en escenarios desconectados y si solo necesitas utilizar un comando a la vez,
utiliza un SqlCommand, de lo contrario un SqlDataAdapter.

2.1. Clase DataAdapter

Un DataAdapter es un "Puente" utilizado para transferir datos entre una fuente de datos y un objeto
DataSet

Un DataAdapter dispone de cuatro propiedades que se utilizan para recuperar y actualizar datos en un
origen de datos:

 SelectCommand: devuelve datos a partir del origen de datos;

 InsertCommand, UpdateCommand y DeleteCommand: se utilizan para administrar cambios en


el origen de datos.

SelectCommand se debe establecer antes de llamar al método Fill de DataAdapter.


Es necesario establecer las propiedades InsertCommand, UpdateCommand o DeleteCommand antes de
llamar al método Update del DataAdapter, en función de las modificaciones realizadas en los datos en el
DataSet.

2. Clase DataSet

El objeto DataSet permite trabajar sobre los datos de base de datos desconectado realizando una copia
fiel de la misma en memoria local bajo un esquema xml, lo que independiza la base de datos del
proveedor de datos proporcionando al desarrollador libertad de trabajo independiente de la
plataforma.  

Cada tabla contenida en el objeto DataSet se encuentra disponible a traves de la propiedad Tables, que
es una colección de objetos System.Data.DataTables. Cada objeto DataTable contiene una colección de
objetos DataRow que representa las filas de la tabla y para finalizar cada objeto DataRow, es decir, cada
fila, posee una colección de objetos DataColumn, que representa cada una de las columnas de la fila
actual. Existen ademas colecciones y objetos para representar las relaciones, claves y valores por
defecto existentes dentro de un objeto DataSet.
Esquema de un DataSet

2.3. Clase DataReader

Los objetos DataReader perm-ite obtener datos de la base de datos y cargarlos en memoria local, por lo
que solo son datos de lectura, para su utilizacion necesitan tabajar sobre una conexión abirta y
ejecutarse a traves de un comando bajo el metodo ExecuteReader. El DataReader son dependientes del
proveedor de datos como OracleDataReader, OleDbDataReader, SqlDataReader, etc.
 

2.4. Clase Command

Permite la ejecucion de comandos que pueden ingresar o extraer informacion del almacen de datos al
que se este conectado, por lo que para ser implementado necesita que la conexión este abierta por lo
que se implementa bajo modo conectado ya que la conexión se cierra hasta que la base de datos
responde a todas nuestras peticiones. El objeto command se rige por un tipo (commandType) y la
cadena de texto que ejecutara como instrucción requerida por el usuario (commandText).
2.5. Clase DataTable

Un DataTable representa una tabla de datos en memoria.

DataTable es un objeto central de la biblioteca ADO.NET. Entre los objetos que utilizan DataTable se
incluyen DataSet y DataView.

Al obtener acceso a los objetos DataTable, hay que tener en cuenta que éstos distinguen entre
mayúsculas y minúsculas condicionalmente. Por ejemplo, si un objeto DataTable se denomina
"mydatatable" y otro "Mydatatable", la cadena que se utilice para buscar una de las tablas se
considerará que distingue entre mayúsculas y minúsculas. Sin embargo, si existe "mydatatable" pero no
existe "Mydatatable", se considerará que la cadena de búsqueda no distingue entre mayúsculas y
minúsculas.

Un objeto DataSet puede contener dos objetos DataTable que tengan el mismo valor para la propiedad
TableName y distintos valores para la propiedad Namespace.
Si se va a crear un DataTable mediante programación, en primer lugar se debe definir su esquema
agregando objetos DataColumn al DataColumnCollection (al que se obtiene acceso mediante la
propiedad Columns).

También podría gustarte