none
Diferencia entre DataSet y DataTable RRS feed

  • Pregunta

  • Hola
    Tengo una pequeña confusión

    La clase DataSet: El DataSet es una representación de datos residente en memoria

    La clase DataTable: Este objeto nos permite representar una determinada tabla en memoria, de modo que podamos interactuar con ella.


    Yo hice esto y obtuve los mismos resultados

    1

    Dim MiDataSet As New DataSet()

    Dim Comando As New SqlDataAdapter("SELECT * FROM usuario", Conexion)

    Comando.Fill(MiDataSet, "usu")

    Me.DataGridView1.DataSource = MiDataSet.Tables("usu")


    2

    Dim MiTabla As New DataTable()

    Dim Comando As New SqlDataAdapter("SELECT * FROM usuario", Conexion)

    Comando.Fill(MiTabla)

    Me.DataGridView1.DataSource = MiTabla


    Cúal es la diferencia, y qué es mejor utilizar?

    Gracias!


    Gracias, WebLatina Con muchas ganas de aprender
    lunes, 26 de octubre de 2009 19:48

Respuestas

  • Hola:

    Imagínate un objeto DataSet como si fuera una base de datos de SQL Server, y al objeto DataTable como si fuera una tabla de esa base de datos.

    Si vas a trabajar con varios objetos DataTable, y ambos van a estar relacionados, entonces necesitarás utilizar un objeto DataSet. Pero si solamente vas a trabajar con una única tabla, entoces, ¿para qué quieres un objeto DataSet? Con un objeto DataTable te bastaría.

    > Yo hice esto y obtuve los mismos resultados

    Porque el método Fill del adaptador de datos está sobrecargado para aceptar varios objetos, entre ellos un objeto DataSet o un objeto DataTable.

    Un saludo

    Enrique Martínez [MS MVP - VB]
    • Marcado como respuesta WebLatina lunes, 26 de octubre de 2009 20:04
    lunes, 26 de octubre de 2009 19:54
    Moderador

Todas las respuestas

  • Hola:

    Imagínate un objeto DataSet como si fuera una base de datos de SQL Server, y al objeto DataTable como si fuera una tabla de esa base de datos.

    Si vas a trabajar con varios objetos DataTable, y ambos van a estar relacionados, entonces necesitarás utilizar un objeto DataSet. Pero si solamente vas a trabajar con una única tabla, entoces, ¿para qué quieres un objeto DataSet? Con un objeto DataTable te bastaría.

    > Yo hice esto y obtuve los mismos resultados

    Porque el método Fill del adaptador de datos está sobrecargado para aceptar varios objetos, entre ellos un objeto DataSet o un objeto DataTable.

    Un saludo

    Enrique Martínez [MS MVP - VB]
    • Marcado como respuesta WebLatina lunes, 26 de octubre de 2009 20:04
    lunes, 26 de octubre de 2009 19:54
    Moderador
  • Hola

    Totalmente compredido.

    Tienes de casualida un ejemplo para: "Si vas a trabajar con varios objetos DataTable, y ambos van a estar relacionados, entonces necesitarás utilizar un objeto DataSet.", quisiera ver como debería utilizarla.

    Gracias
    Gracias, WebLatina Con muchas ganas de aprender
    lunes, 26 de octubre de 2009 20:09
  • Pues ahora mismo no dispongo de ninguno, pero para relacionar objetos DataTable (como se relacionan las tablas de una base de datos), tienes que utilizar objetos DataRelation, los cuales tendrás que añadirlos al objeto DataSet.

    Me imagino que si consultas dicho objeto en la ayuda de Visual Studio, aparte de encontrar un ejemplo, también encontrarás la información y comentarios al respecto. :-)


    Enrique Martínez [MS MVP - VB]
    lunes, 26 de octubre de 2009 20:20
    Moderador
  • Así es que se pueden crear una relación maestro detalle???
    Gracias, WebLatina Con muchas ganas de aprender
    lunes, 26 de octubre de 2009 20:25
  • hola

    En principio hay que aclarar que uno es contenedor de otro, o sea un Dataset puede contener uno o varios DataTable, y como bien comenta Enrique dentro del dataset se peuden crear relaciones entre los datatable.

    seguro te quede mas claro si ves como hacer usod e dataset con tipo

    Typed DataSets (ADO.NET)
    DataSets con establecimiento de tipos (ADO.NET)
    C ó mo: Crear un conjunto de datos con tipo
    Typed DataSets in .NET

    y que mejor para cnocer que ver la doc del msdn sobre DataSet

    con respecto al Fill() veras que si sabes de antemano que tu dataset solo tendra un datatable contenido no debes especificar el nombre

    podrias hacer eso

    Dim MiDataSet As New DataSet()
    Dim Comando As New SqlDataAdapter("SELECT * FROM usuario", Conexion)
    Comando.Fill(MiDataSet)

    Me.DataGridView1.DataSource = MiDataSet.Tables(0)


    sin problemas, ya que en este caso tu dataset tendra una sola tabla
    si ahora tu dataset tiene mas de una tabla ahi la cosa es diferente, si debes indicar que datatable estas cargando en el Fill()


    Nota, recuerda que los link del msdn puedes cambiarle de idioma con la opcion superior de la apgina

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 26 de octubre de 2009 20:28
  • hola

    How to: Create a Master/Detail Form Using Two Windows Forms DataGridView Controls


    en el link veras como crear la relacion maestro detalle usando un dataset y una grilla
    alli veras como crea desde codigo la relation entre las datatable



    Nota, recuerda que los link del msdn puedes cambiarle de idioma con la opcion superior de la pagina

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 26 de octubre de 2009 20:33
  • Hola

    Son muchas cosas las que se mencionan allí en este link de maesto detalle, definitivamente si se debe realizar una relación entre los dataRelation, pero salen alli nuevos elementos como BinDingSource.

    Tienes algo menos complejo, he leido varios conceptos pero estoy en proceso de asililación, es decir algo no tan avanzado.

    Cordialmente,


    Gracias, WebLatina Con muchas ganas de aprender
    lunes, 26 de octubre de 2009 21:14
  • hola

    por ahi algo como esto:

    Establecer una vista Maestro Detalle, entre dos Tablas


    Igual con respecto al otro link solo deberias centrarte en los puntos donde hace uso del dataset, todo lo que es bindeo deberias descartarlo ay que en tu caso no usaras una gril

    Tambien te aconsejo que veas el uso de dataset tipados como te mencione en un post anterior, podras crear los datatable y sus relaciones de forma visual

    por ahi tambien el uso de tableadapter te podria ayudar
    Building a DAL using Strongly Typed TableAdapters and DataTables in VS 2005 and ASP.NET 2.0


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 26 de octubre de 2009 22:12