Cómo llenar un objeto DataSet desde una base de datos mediante Visual Basic .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 301216 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E301216
Expandir todo | Contraer todo

En esta página

Resumen

Los objetos DataSet, un componente fundamental para el acceso a datos en Microsoft .NET Framework, son objetos en memoria que pueden contener tablas, vistas y relaciones. En este artículo se indica cómo se llena un objeto DataSet con los resultados de una o varias consultas de una base de datos y cómo se obtiene acceso a estos datos una vez que se han cargado en el objeto DataSet.

Requisitos

En la lista siguiente se describen el hardware, el software, la infraestructura de red y los Service Pack que necesita:
  • Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server o Windows NT 4.0 Server
  • Microsoft SQL Server 7.0, SQL Server 2000 o Microsoft Data Engine con la base de datos de ejemplo Pubs instalada
  • Microsoft Visual Studio .NET
En este artículo se presupone que está familiarizado con los temas siguientes:
  • Terminología de base de datos
  • Lenguaje de consulta estructurado (SQL)

Llenar un conjunto de datos

Mediante la utilización de diversos objetos del espacio de nombres System.Data, puede conectarse a un servidor de base de datos, ejecutar una consulta y situar los resultados en un objeto DataSet. DataSet es un objeto desconectado. Por tanto, una vez que se carguen los datos, la conexión a la base de datos no volverá a utilizarse hasta que desee cargar más datos o actualizar el servidor con los cambios efectuados en la copia en memoria de la información.

Para cargar datos desde una base de datos en un objeto DataSet, siga estos pasos:
  1. Inicie Visual Studio .NET
  2. Abra un nuevo proyecto de aplicación de consola en Microsoft Visual Basic .NET. Visual Studio .NET crea un módulo junto con un procedimiento Main vacío.
  3. Asegúrese de que el proyecto hace referencia a los espacios de nombres System y System.Data.
  4. Utilice la instrucción Imports de los espacios de nombres System, System.Data y System.Data.SqlClient para que no tenga que calificar las declaraciones de estos espacios de nombres más adelante en el código. Debe utilizar estas instrucciones antes que cualquier otra declaración.
    Imports System
    Imports System.Data
    Imports System.Data.SqlClient
    					
  5. El primer paso para recopilar los datos de la base de datos en el objeto DataSet consiste en establecer la conexión con la base de datos, lo que requiere un objeto System.Data.SqlClient.SqlCommand y una cadena de conexión. La cadena de conexión del código se conecta a un servidor SQL Server que se encuentra en el equipo local (el equipo en el que se está ejecutando el código). Debe modificar esta cadena de conexión de acuerdo con su entorno. Después de crear el objeto SqlConnection, llame al método Open de ese objeto para establecer el vínculo real con la base de datos.
    Dim sConnectionString As String
    sConnectionString = "Password=<strong password>;User ID=<username>;" & _
                        "Initial Catalog=pubs;" & _
                        "Data Source=(local)"
    
    Dim objConn As New SqlConnection(sConnectionString)
    objConn.Open()
    					
  6. Cree un objeto DataAdapter; este objeto representa el vínculo que existe entre la base de datos y el objeto DataSet. Puede especificar un comando SQL u otro tipo de comando y utilizarlo para recuperar datos como parte del objeto constructor de DataAdapter. En este ejemplo se utiliza una instrucción SQL que recupera los registros de la tabla Authors incluida en la base de datos Pubs.
    Dim daAuthors As _
        New SqlDataAdapter("Select * From Authors", objConn)
    					
  7. Debe declarar y crear una instancia de un objeto DataSet; en ese momento podrá asignar un nombre a todo el DataSet antes de comenzar a cargar los datos. El nombre puede contener varias tablas distintas.
    Dim dsPubs As New DataSet("Pubs")
    					
  8. La clase SqlDataAdapter proporciona dos métodos, Fill y FillSchema, que son cruciales para cargar estos datos. Estos dos métodos cargan la información en un objeto DataSet. Fill carga los datos propiamente dichos y FillSchema carga todos los metadatos disponibles sobre una determinada tabla (como los nombres de columna, las claves principales y las restricciones). Una forma adecuada de controlar la carga de los datos es ejecutar FillSchema y, a continuación, Fill. Por ejemplo:
    daAuthors.FillSchema(dsPubs, SchemaType.Source, "Authors")
    daAuthors.Fill(dsPubs, "Authors")
    						
    Si solo utiliza Fill, únicamente podrá cargar los metadatos básicos necesarios para describir los nombres de columna y los tipos de datos. El método Fill no carga información de la clave principal. Para cambiar este comportamiento predeterminado, puede establecer la propiedad MissingSchemaAction del objeto DataAdapter en MissingSchemaAction.AddWithKey, para cargar así los metadatos de la clave principal junto con la información predeterminada. Por ejemplo:
    daAuthors.MissingSchemaAction = MissingSchemaAction.AddWithKey
    daAuthors.Fill(dsPubs, "Authors")
    					
  9. Ahora los datos están disponibles como un objeto DataTable individual dentro de la colección Tables del objeto DataSet. Si especificó un nombre de tabla al llamar a FillSchema y a Fill, puede utilizar ese nombre para obtener acceso a la tabla específica que desee.
    Dim tblAuthors As DataTable
    tblAuthors = dsPubs.Tables("Authors")
    					
  10. Puede utilizar un bucle For Each para recorrer todos los objetos DataRow incluidos en la colección Rows de un objeto DataTable. De este modo, podrá obtener acceso a cada fila de la tabla. Puede tener acceso a las columnas por nombre o por índice posicional (donde '0' es la posición de la primera columna). Por ejemplo:
    Dim drCurrent As DataRow
    For Each drCurrent In tblAuthors.Rows
        Console.WriteLine("{0} {1}", _
            drCurrent("au_fname").ToString, _
            drCurrent("au_lname").ToString)
    Next
    Console.ReadLine()
    					
  11. Guarde el proyecto. En el menú Depurar, haga clic en Iniciar para ejecutar el proyecto y comprobar que funciona.

Lista completa de códigos

Nota: debe cambiar el identificador de usuario <nombreDeUsuario> y la contraseña=<contraseña segura> por los valores correctos antes de ejecutar este código. Asegúrese de que el identificador de usuario tiene los permisos apropiados para realizar esta operación en la base de datos.
Option Explicit On 
Option Strict On

Imports System
Imports System.Data
Imports System.Data.SqlClient

Module Module1

    Sub Main()
        Dim sConnectionString As String
        sConnectionString = "Password=<strong password>;User ID=<username>;" & _
                            "Initial Catalog=pubs;" & _
                            "Data Source=(local)"

        Dim objConn As New SqlConnection(sConnectionString)
        objConn.Open()

        Dim daAuthors As _
            New SqlDataAdapter("Select * From Authors", objConn)

        Dim dsPubs As New DataSet("Pubs")
        daAuthors.FillSchema(dsPubs, SchemaType.Source, "Authors")
        daAuthors.Fill(dsPubs, "Authors")

        Dim tblAuthors As DataTable
        tblAuthors = dsPubs.Tables("Authors")

        Dim drCurrent As DataRow
        For Each drCurrent In tblAuthors.Rows
            Console.WriteLine("{0} {1}", _
                drCurrent("au_fname").ToString, _
                drCurrent("au_lname").ToString)
        Next
        Console.ReadLine()
    End Sub

End Module
				

Referencias

Para obtener más información sobre ADO.NET, los objetos DataSet y SQL, consulte los siguientes sitios Web de Microsoft:
"Diving into Data Access" (una columna de MSDN Voices redactada por Dino Esposito)
http://msdn2.microsoft.com/en-us/library/ms810293.aspx

ADO.NET para el programador de ADO
http://msdn2.microsoft.com/en-us/library/ms973217.aspx

Centro de desarrollo de MSDN Online .NET Framework
http://msdn.microsoft.com/es-es/netframework/default.aspx
Para obtener más información, consulte los temas siguientes de la documentación de ayuda de Visual Studio .NET o los sitios web de Microsoft siguientes:
Tutorial: Creating a Distributed Application
http://msdn.microsoft.com/es-es/library/1as0t7ff.aspx

Walkthrough: Creating a Master-Detail Windows Form
http://msdn.microsoft.com/es-es/library/aa984462.aspx
Si instaló los ejemplos de los tutoriales rápidos, los proyectos de ejemplo están disponibles en el directorio siguiente:
C:\Archivos de programa\Microsoft.NET\FrameworkSDK\Samples
Nota: es un artículo de "PUBLICACIÓN RÁPIDA" creado directamente por la organización de soporte técnico de Microsoft. La información aquí contenida se proporciona como está, como respuesta a problemas que han surgido. Como consecuencia de la rapidez con la que lo hemos puesto disponible, los materiales podrían incluir errores tipográficos y pueden ser revisados en cualquier momento sin previo aviso. Vea las Condiciones de uso para otras consideraciones

Propiedades

Id. de artículo: 301216 - Última revisión: miércoles, 30 de octubre de 2013 - Versión: 1.0
La información de este artículo se refiere a:
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palabras clave: 
kbhowtomaster KB301216

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com