Académique Documents
Professionnel Documents
Culture Documents
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)
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.
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