Buscar contenidos

miércoles, 20 de julio de 2016

Cuando usar un SqlCommand o un SqlDataAdapter

Fuente

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

No hay comentarios:

Publicar un comentario