Resumen
En este artículo se muestra cómo recuperar datos de una base de datos de
Microsoft Access y presentar datos al usuario mediante programación. En el
ejemplo de este artículo se utilizan las clases OleDbConnection,
OleDbCommand y OleDbDataReader, que forman parte de ADO.NET y Microsoft .NET
Framework.
Requisitos
Microsoft Windows 2000 Professional, Windows 2000 Server o Windows 2000
Advanced Server
Servicios de Microsoft Internet Information Server (IIS) versión 5.0
Microsoft .NET Framework
Base de datos Neptuno de Microsoft Access
Volver al principio
Crear una página ASPX
En el código de ejemplo de esta sección se crea una cadena que contendrá los
datos recuperados de la base de datos junto con el código adicional del
Lenguaje de marcado de hipertexto (HTML) para producir una representación
muy sencilla del resultado. Tenga en cuenta que ASP.NET ofrece diversos
controles que puede utilizar para conseguir un procesamiento sencillo y
mejorado de los datos.
Además, el código que crea la tabla HTML incluye alguna concatenación de
cadenas. Aunque puede utilizar la clase StringBuilder para conseguir este
resultado con mayor eficiencia, el código de este ejemplo no utiliza
StringBuilder por reducir el número de componentes de .NET Framework que
introduce el código. Para obtener más información acerca de la clase
StringBuilder, consulte la siguiente documentación del Kit de desarrollo de
software (SDK) de .NET Framework:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemTextStringBuilderClassTopic.asp
Para recuperar y mostrar registros de una base de datos de Access, siga
estos pasos:
1. Agregue un nuevo Web Form llamado DataSample.aspx al proyecto de
aplicación Web ASP.NET de Visual Basic en Visual Studio .NET de la manera
siguiente:
a. En el Explorador de soluciones, haga clic con el botón secundario del
mouse (ratón) en el nodo del proyecto, haga clic en Agregar y, a
continuación, haga clic en Agregar Web Forms.
b. En el cuadro de texto Nombre, escriba DataSample.aspx y, después, haga
clic en Abrir.
c. Haga clic en la ficha HTML.
2. Elimine el código predeterminado que Visual Studio .NET agrega a la
página.
3. Resalte el código siguiente, haga clic con el botón secundario del mouse
(ratón) en el mismo y, a continuación, haga clic en Copiar. En Visual Studio
.NET, haga clic en Pegar como HTML en el menú Edición para pegar el código
en DataSample.aspx:
4. <%@Import Namespace="System.Data"%>
5. <%@Import
Namespace="System.Data.OleDb"%>
6. <script
language=vb runat=server>
7. Private Sub
Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
9. Dim
myConnection As OleDbConnection
10. Dim
myCommand As OleDbCommand
11. Dim myReader
As OleDbDataReader
13. 'Utilizar
una variable para almacenar la cadena de conexión ConnectionString.
14. Dim
myConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
15. "Data Source=C:\File
Databases\NWIND.MDB"
17. 'Crear un
objeto OleDbConnection18. 'y pasar la ConnectionString al constructor.
19. myConnection
= New OleDbConnection(myConnectionString)
21. 'Abrir la
conexión.
22.
myConnection.Open()
24. 'Utilizar
una variable para almacenar la instrucción SQL.
25. Dim mySelect
As String = "SELECT CustomerID, ContactName, Phone FROM Customers"
27. 'Crear un
objeto OleDbCommand.
28. 'Observe que
pasamos la instrucción SQL y el objeto OleDbConnection.
29. myCommand =
New OleDbCommand(mySelect, myConnection)
31. 'Enviar el
CommandText a la conexión y crear un OleDbDataReader.
32. 'Nota: el
OleDbDataReader es de sólo avance.
33. myReader =
myCommand.ExecuteReader()
35. 'Utilizar
una variable para almacenar la información devuelta por el OleDbDataReader
36. 'y el código
de la tabla HTML que utilizará para presentar el resultado.
37. Dim
TableBuilder = "<table border=1 cellspacing=1>"
39. 'Crear una
fila de tabla inicial que contiene los nombres de columna.
40. TableBuilder
+= "<tr><td><B>Customer ID</B></td>" & _
41. "<td><B>Contact
Name</B></td>" & _
42. "<td><B>Phone</B></td></tr>"
44. 'Recorrer
los registros de uno en uno.
45. While (myReader.Read())
46. 'Concatenar
los valores del DataReader para crear cada fila de la tabla.
47. TableBuilder
+= "<tr><td>" & myReader("CustomerID") _
48. & "</td><td>"
+ myReader("ContactName") _
49. & "</td><td>"
& myReader("Phone") & "</td></tr>"
50. End While
52. TableBuilder
+= "</table>"
54. 'Escribir la
cadena final.
55.
Response.Write(TableBuilder)
57. 'Cerrar la
conexión y el DataReader.
58.
myConnection.Close()
59.
myReader.Close()
60. End Sub
61. </script>
62. Modifique la
variable myConnectionString al principio del código para que señale
correctamente a la base de datos Neptuno.
63. En el menú Archivo, haga clic en Guardar DataSample.aspx para guardar
los cambios realizados en el archivo.
64. En el menú Generar, haga clic en Generar solución para generar el
proyecto.
65. En el Explorador de soluciones del Entorno de desarrollo integrado (IDE)
de Visual Studio .NET, haga clic con el botón secundario del mouse (ratón)
en DataSample.aspx y, después, haga clic en Ver en el explorador. La página
aparecerá en el explorador, junto con los datos de la base de datos Neptuno.
Solucionar
problemas
Es posible que aparezca el mensaje de error siguiente (u otro
similar) en tiempo de ejecución:
El motor de base de datos Microsoft Jet no puede abrir el archivo 'C:\File
Databases\NWIND.MDB'. Otro usuario lo ha abierto de manera exclusiva o se
necesita permiso para ver sus datos.
Normalmente este error se produce porque no tiene los permisos adecuados de
acceso al archivo de base de datos (.mdb). Si está utilizando autenticación
anónima, la cuenta Anónima (que suele ser IUSR_ NombreDeEquipo ) debe
modificar los permisos para el archivo .mdb y la carpeta donde reside el
archivo. Si está utilizando autenticación básica o de Windows integrada,
debe configurar en consecuencia los permisos de las cuentas relacionadas
para dichos métodos de autenticación en la carpeta y el archivo .mdb.
Asegúrese de que los componentes del motor de base de datos Microsoft Jet
están instalados. A partir de MDAC 2.6 no se incluyen los componentes de
Jet. Sin embargo, puede descargar una versión redistribuible del Service
Pack más reciente de Jet 4.0 si es necesario.