Mejoras en ADO.NET 2.0: El método DataTable.Load

Para los que no conocéis este método aún, os diré que es una de las nuevas mejoras de ADO.NET 2.0 que mas me gusta.

En versiones anteriores de ADO.NET, para devolver un DataTable, teníamos que hacer todo aquella parafernalia de la conexión, comando, dataadapter, dataset... y el DataSet está pansado como un conjunto de resultados, entones tener que cargarlo con una sola tabla para tener que estar accediendo a su colección de tablas para devolver la tabla en concreto, no tiene mucho sentido desde mi punto de vista.

Ahora el DataTable viene provisto de un nuevo método Load, que podemos cargar el DataTable con los valores de un origen de datos utilizando la interfaz IDataReader:

   1:  DataTable table = new DataTable();
   2:   
   3:  using (SqlConnection conexion
   4:         = new SqlConnection("Cadena de Conexión"))
   5:  {
   6:      using (SqlCommand command = new SqlCommand())
   7:      {
   8:          command.Connection = conexion;
   9:          command.CommandText = "SELECT * FROM Tabla";
  10:   
  11:          conexion.Open();
  12:          using (SqlDataReader reader =
  13:              command.ExecuteReader
  14:                  (CommandBehavior.CloseConnection))
  15:          {
  16:              table.Load(reader);
  17:          }
  18:      }
  19:  }

 Además de esta manera seguimos manteniendo toda la potencia del objeto DataTable con un mejor performance en el acceso a datos ;)

Salu2

Published 25/6/2007 12:08 por Luis Ruiz Pavón
Comparte este post:
http://geeks.ms/blogs/lruiz/archive/2007/06/25/mejoras-en-ado-net-2-0-el-m-233-todo-datatable-load.aspx

Comentarios

# re: Mejoras en ADO.NET 2.0: El método DataTable.Load

un ejemplo en visual basic, te falto!!!

Tuesday, November 06, 2007 7:01 PM por Luis

# re: Mejoras en ADO.NET 2.0: El método DataTable.Load

En VB.NET:

Dim table As New DataTable()

Using conexion As New SqlConnection("Cadena de Conexión")

   Using command As New SqlCommand()

       command.Connection = conexion

       command.CommandText = "SELECT * FROM Tabla"

       conexion.Open()

       Using reader As SqlDataReader = command.ExecuteReader(CommandBehavior.CloseConnection)

           table.Load(reader)

       End Using

   End Using

End Using

Cuando quieras traducir de C# a VB.NET:

labs.developerfusion.co.uk/.../csharp-to-vb.aspx

Salu2

Tuesday, November 13, 2007 1:01 PM por Luis Ruiz Pavón

# re: Mejoras en ADO.NET 2.0: El método DataTable.Load

perfecto gracias

Wednesday, May 14, 2008 7:25 PM por dani

# re: Mejoras en ADO.NET 2.0: El método DataTable.Load

Hola sabes algo, creo que te falta mucho en programacion , por si no lo sabes a mas objetos crees tu aplicacion se hace mas lenta.

Para que utilizar un datatable, un datareader,un objeto connection, un objeto command, estas utilizando cuatro objetos para que solo muestres los datos de una tabla.Lo unico bueno que eh visto en tu programacion es que las conexiones los pongas en un bloque using. Pero no has utilizado un app config, y por si no lo sabes un mantenimiento a una tabla de puede hacer con solo tres objetos, dataadapter que abre y cierra la conexion, sin necesidad de abrir un objConex.open y cerrar.

Por si no lo sabes el DataAdapter realiza todo a traves de su propiedad SelectCommand(insertar,buscar,eliminar) no veo la necesidad de crear cuatro objetos. creo que te faltaa

Thursday, July 23, 2009 7:19 PM por luis

# re: Mejoras en ADO.NET 2.0: El método DataTable.Load

Muy bueno, el articulo. respecto al comentario

"Hola sabes algo, creo que te falta mucho en programacion , por si no lo sabes a mas objetos crees tu aplicacion se hace mas lenta.

Para que utilizar un datatable, un datareader,un objeto connection, un objeto command, estas utilizando cuatro objetos para que solo muestres los datos de una tabla.Lo unico bueno que eh visto en tu programacion es que las conexiones los pongas en un bloque using. Pero no has utilizado un app config, y por si no lo sabes un mantenimiento a una tabla de puede hacer con solo tres objetos, dataadapter que abre y cierra la conexion, sin necesidad de abrir un objConex.open y cerrar.

Por si no lo sabes el DataAdapter realiza todo a traves de su propiedad SelectCommand(insertar,buscar,eliminar) no veo la necesidad de crear cuatro objetos. creo que te faltaa"

yo pienso, que los comentarios deben ser constructivos, y respetuosos, con relacion a lo del dataAdapter debes saber que es un objeto de alto nivel dentro de ADO.net pero en su estructura interna usa un objeto connection para extablecer la comuniocacion, y luego usa un objeto command para ejecutar la consulta, si la consulta debuelve mas de un valor(campo) el coman usa el metodo reader que debuelve un objeto datareader que contiene el resultado de la consulta, este metodo load del datatable carga en una tabla el resultado de una consulta, un dataadapter con su metodo fill llena una tabla pero en un conjunto de datos. de hecho es el metodo que menos me gusta particularmente. hay que tener mas elementos de juicio antes de lanzar uno

Sunday, November 22, 2009 10:51 PM por John T