Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

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

Este artículo se publicó anteriormente con el número E301216
Para obtener una versión de este artículo para Microsoft Visual C# .NET, consulte 314145.
Para obtener una versión de este artículo para Microsoft Visual Basic 6.0, consulte 168336.

Este artículo hace referencia a los siguientes espacios de nombres de la Biblioteca de clases de Microsoft .NET Framework:
  • Sistema
  • System.Data
  • System.Data.SqlClient

EN ESTA TAREA

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 SystemImports System.DataImports 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 StringsConnectionString = "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.AddWithKeydaAuthors.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 DataTabletblAuthors = 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 DataRowFor Each drCurrent In tblAuthors.Rows    Console.WriteLine("{0} {1}", _        drCurrent("au_fname").ToString, _        drCurrent("au_lname").ToString)NextConsole.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 OnImports SystemImports System.DataImports System.Data.SqlClientModule 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 SubEnd 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: 10/30/2013 21:49:00 - Revisión: 1.0

  • Microsoft Visual Basic .NET 2002 Standard Edition
  • kbhowtomaster KB301216
Comentarios