none
¿DataSet o DataReader? RRS feed

  • Pregunta

  • Saludos expertos en el desarrollo.

    Me gustaría saber cual la diferencia entre utilizar el vaciado de datos de una consulta a la BBDD en un Dataset o un DataReader...cual es mejor o en que circunstancias utilizar uno y en que utilizar el otro.

    Gracias.

    lunes, 13 de junio de 2016 13:53

Respuestas

  • El DataSet es un contenedor de datos en memoria. Esos datos podrían provenir o no de una base de datos. En el caso de que provengan de una BD, lo más sencillo es traerlos por mediación de un DataAdapter. Y el DataAdapter internamente utiliza un DataReader para bombear los datos desde la BD al DataSet.

    Así pues, el DataSet solo guarda datos, y el DataReader solo transporta datos.

    SI no necesitas guardarlos (por ejemplo, si los vas a procesar registro a registro sin tener que conservarlos en memoria), entonces usarías un DataReader. Y aunque desees guardarlos, si prefieres usar tu propio contenedor tal como un List<miClase> en lugar del DataSet, pues también usarías un DataReader para cargar los datos en ese contenedor.

    Y recíprocamente, si tienes que manejar tablas de datos en memoria (aunque no vengan de una base de datos, por ejemplo, podrías leerlas desde un archivo XML), entonces puede resultarte cómodo guardarlas en un DataSet.

    • Marcado como respuesta ivankikes lunes, 13 de junio de 2016 19:24
    lunes, 13 de junio de 2016 14:46
  • hola

    en realidad mi consejo es que ninguno de los dos, usa entity framework

    o sino usa el datareader para asignar clases que tu definas, la idea es programar de forma tipada con objetos usando al mens una capa de datos

    [WinForms] Edición Empleados

    analiza como se usa en el ejemplo el datareader para cargar entidades y listas que devuelves como respuesta de la capa de datos

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta ivankikes lunes, 13 de junio de 2016 19:24
    lunes, 13 de junio de 2016 15:22

Todas las respuestas

  • El DataSet es un contenedor de datos en memoria. Esos datos podrían provenir o no de una base de datos. En el caso de que provengan de una BD, lo más sencillo es traerlos por mediación de un DataAdapter. Y el DataAdapter internamente utiliza un DataReader para bombear los datos desde la BD al DataSet.

    Así pues, el DataSet solo guarda datos, y el DataReader solo transporta datos.

    SI no necesitas guardarlos (por ejemplo, si los vas a procesar registro a registro sin tener que conservarlos en memoria), entonces usarías un DataReader. Y aunque desees guardarlos, si prefieres usar tu propio contenedor tal como un List<miClase> en lugar del DataSet, pues también usarías un DataReader para cargar los datos en ese contenedor.

    Y recíprocamente, si tienes que manejar tablas de datos en memoria (aunque no vengan de una base de datos, por ejemplo, podrías leerlas desde un archivo XML), entonces puede resultarte cómodo guardarlas en un DataSet.

    • Marcado como respuesta ivankikes lunes, 13 de junio de 2016 19:24
    lunes, 13 de junio de 2016 14:46
  • hola

    en realidad mi consejo es que ninguno de los dos, usa entity framework

    o sino usa el datareader para asignar clases que tu definas, la idea es programar de forma tipada con objetos usando al mens una capa de datos

    [WinForms] Edición Empleados

    analiza como se usa en el ejemplo el datareader para cargar entidades y listas que devuelves como respuesta de la capa de datos

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta ivankikes lunes, 13 de junio de 2016 19:24
    lunes, 13 de junio de 2016 15:22