Está en la página 1de 4

Cmo llenar un objeto DataSet desde una base de datos mediante Visual Basic .

NET
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 artculo se indica cmo se llena un objeto DataSet con los resultados de una o varias consultas de una base de datos y cmo 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 artculo se presupone que est familiarizado con los temas siguientes: Terminologa de base de datos Lenguaje de consulta estructurado (SQL)

Llenar un conjunto de datos


Mediante la utilizacin 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 conexin a la base de datos no volver a utilizarse hasta que desee cargar ms datos o actualizar el servidor con los cambios efectuados en la copia en memoria de la informacin. 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 aplicacin de consola en Microsoft Visual Basic .NET. Visual Studio .NET crea un mdulo junto con un procedimiento Main vaco. 3. Asegrese de que el proyecto hace referencia a los espacios de nombres System y System.Data. 4. Utilice la instruccin 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 ms adelante en el cdigo. Debe utilizar estas instrucciones antes que cualquier otra declaracin. 5. Imports System

6. Imports System.Data 7. Imports System.Data.SqlClient 8. El primer paso para recopilar los datos de la base de datos en el objeto DataSet consiste en establecer la conexin con la base de datos, lo que requiere un objeto System.Data.SqlClient.SqlCommand y una cadena de conexin. La cadena de conexin del cdigo se conecta a un servidor SQL Server que se encuentra en el equipo local (el equipo en el que se est ejecutando el cdigo). Debe modificar esta cadena de conexin de acuerdo con su entorno. Despus de crear el objeto SqlConnection, llame al mtodo Open de ese objeto para establecer el vnculo real con la base de datos. 9. Dim sConnectionString As String 10. sConnectionString = "Password=<strong password>;User ID=<username>;" & _ 11. "Initial Catalog=pubs;" & _ 12. "Data Source=(local)" 13. 14. Dim objConn As New SqlConnection(sConnectionString) 15. objConn.Open() 16. Cree un objeto DataAdapter; este objeto representa el vnculo 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 instruccin SQL que recupera los registros de la tabla Authors incluida en la base de datos Pubs. 17. Dim daAuthors As _ 18. New SqlDataAdapter("Select * From Authors", objConn) 19. 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. 20. Dim dsPubs As New DataSet("Pubs") 21. La clase SqlDataAdapter proporciona dos mtodos, Fill y FillSchema, que son cruciales para cargar estos datos. Estos dos mtodos cargan la informacin 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 continuacin, Fill. Por ejemplo: 22. daAuthors.FillSchema(dsPubs, SchemaType.Source, "Authors") 23. daAuthors.Fill(dsPubs, "Authors") Si solo utiliza Fill, nicamente podr cargar los metadatos bsicos necesarios para describir los nombres de columna y los tipos de datos. El mtodo Fill no carga informacin 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 informacin predeterminada. Por ejemplo:

daAuthors.MissingSchemaAction = MissingSchemaAction.AddWithKey daAuthors.Fill(dsPubs, "Authors") 24. Ahora los datos estn disponibles como un objeto DataTable individual dentro de la coleccin 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 especfica que desee. 25. Dim tblAuthors As DataTable 26. tblAuthors = dsPubs.Tables("Authors") 27. Puede utilizar un bucle For Each para recorrer todos los objetos DataRow incluidos en la coleccin 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 posicin de la primera columna). Por ejemplo: 28. Dim drCurrent As DataRow 29. For Each drCurrent In tblAuthors.Rows 30. Console.WriteLine("{0} {1}", _ 31. drCurrent("au_fname").ToString, _ 32. drCurrent("au_lname").ToString) 33. Next 34. Console.ReadLine() 35. Guarde el proyecto. En el men Depurar, haga clic en Iniciar para ejecutar el proyecto y comprobar que funciona.

Lista completa de cdigos


Nota: debe cambiar el identificador de usuario <nombreDeUsuario> y la contrasea=<contrasea segura> por los valores correctos antes de ejecutar este cdigo. Asegrese de que el identificador de usuario tiene los permisos apropiados para realizar esta operacin 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