Índice de la sección dedicada a .NET (en el Guille) ASP.NET

Acceder a una base de datos de Access usando ADO.NET, desde un formulario Web

Publicado el 02/Ene/2004
Actualizado el 02/Ene/2004

 

Código para Visual Basic.NET (VB.NET)

Código para C Sharp (C#)


 

Introducción

En este ejemplo se accede a una base de datos de Access usando ADO.NET.
Como verás el código es parecido al que se usaría en una aplicación normal, ya que no me cansaré de repetir que en ASP.NET el lenguaje usado será el mismo que en el resto de aplicaciones .NET, ya que no existe una versión especial para usar en páginas Web, cosa que si ocurría con ASP normal.

En el ejemplo siguiente, se da por supuesto que existe un directorio llamado "datos" que está en el mismo directorio que la página ASPX, si cambias la localización de ese directorio, tendrás que cambiar el código de la conexión, más concretamente en el parámetro a Server.MapPath(...).

Panorama

En el zip con el ejemplo, incluyo una pequeña base de datos que es la usada en el formulario Web.
Por tanto, si lo descomprimes, procura que la base de datos se quede dentro del directorio "datos".
De forma predeterminada se creará ese directorio.
¿Dónde descomprimir el fichero?
Dentro del directorio "localhost", por defecto es: C:\Inetpub\wwwroot
Para acceder a la página de prueba, tendrás que usar http://localhost/ejemploAccessADONET.aspx
Por supuesto esto sólo será posible si tienes el Windows 2000/XP Profesional o un Windows Server que tenga instalado el IIS.

 

Nota: Este ejemplo realmente no utiliza ningún control ASP.NET, sólo código "puro y duro".

 

El link al código de ejemplo: ejemploAccess.zip (13.4KB)
El cual incluye también el ejemplo de acceso a ADO

 

Notas sobre el código ASP.NET (aunque poco) mostrado:

 

 

Si queremos activar Option Strict en una página ASP.NET tendremos que indicarlo en la directiva <%@ Page indicando Strict = true (o false si lo queremos desactivar), por ejemplo:
<%@ Page Language = VB Strict = true %>

¿Por qué ser tan estrictos?
Porque así haremos las cosas "bien" y si hacemos algo mal: una asignación o una declaración, la haremos porque nosotros queremos hacerla, no porque "nos hayamos equivocado al hacerla".

Por favor usa siempre Option Strict On en tu código.

 

 


Código para Visual Basic.NET (VB.NET)El código para VB .NET

<% @Page Language = VB %>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>

<Script Language=VB Runat=Server>
Sub Page_Load(sender As Object, e As EventArgs)
    Dim cnn As OleDbConnection
    Dim cmd As OleDbDataAdapter
    dim dt As DataTable
    dim i, n As Integer
    dim s As String
    '
    Response.Write("<p><font face='Verdana' size='4'>")
    Response.Write("Prueba de acceso a base de datos Access con ADO.NET y ASP.NET")
    Response.Write("</font><hr noshade size='3'>")
    Response.Write("<p><font face='Verdana' size='2'> ")
    '
    s = "SELECT * FROM Titulos ORDER BY Apartado ASC;"
    '
    cnn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
				Server.MapPath("datos\elguille.mdb") & ";")
    ' Crear el comando
    cmd = New OleDbDataAdapter(s, cnn)
    '
    ' Llenar el DataTable
    dt = New DataTable
    cmd.Fill(dt)
    '
    n = dt.Rows.Count
    If n = 0 then
        Response.Write("<p>No hay registros.</p>")
    Else
        Response.Write(n.ToString & " registros hallados.<br>")
        Response.Write("<p>")
        For i = 0 To n - 1
            Dim sTitulo, sLink, sApartado, sDescripcion As String
            '
            sApartado = dt.Rows(i).Item("Apartado")
            sTitulo = dt.Rows(i).Item("Titulo")
            sLink = dt.Rows(i).Item("Link")
            sDescripcion = dt.Rows(i).Item("Descripcion")
            Response.Write((i + 1).ToString("0000") & _
		"- <a href='" & sLink & "'>" & _
		sTitulo & "</a><b>(" & _
		sApartado & ")</b><br>" & sDescripcion & "<br>")
         Next
         Response.Write("</p>")
    End If
    Response.Write("</font></p>")
End Sub
</Script>

<html>
<head>
<title>Acceso a datos usando ADO.NET</title>
</head>

<BODY bgcolor="#FFFFFF" text="#000000">


<hr noshade size="3">
</body>
</html>

 


Código para C Sharp (C#)El código para C#

<% @Page Language = C# %>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>

<Script Language=C# Runat=Server>
void Page_Load(object sender, EventArgs e){
    OleDbConnection cnn;
    OleDbDataAdapter cmd;
    DataTable dt;
    int i, n;
    string s;
    //
    Response.Write("<p><font face='Verdana' size='4'>")
    Response.Write("Prueba de acceso a base de datos Access con ADO.NET y ASP.NET");
    Response.Write("</font><hr noshade size='3'>");
    Response.Write("<p><font face='Verdana' size='2'> ");
    //
    s = "SELECT * FROM Titulos ORDER BY Apartado ASC;";
    //
    cnn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" 
				+ Server.MapPath(@"datos\elguille.mdb") + ";");
    // Crear el comando
    cmd = new OleDbDataAdapter(s, cnn);
    //
    // Llenar el DataTable
    dt = new DataTable();
    cmd.Fill(dt);
    //
    n = dt.Rows.Count;
    if( n == 0 )
        Response.Write("<p>No hay registros.</p>");
    else{
        Response.Write(n.ToString() + " registros hallados.<br>");
        Response.Write("<p>");
        for(i = 0; i<n; i++){
            string sTitulo, sLink, sApartado, sDescripcion;
            //
            sApartado = dt.Rows[i]["Apartado"].ToString();
            sTitulo = dt.Rows[i]["Titulo"].ToString();
            sLink = dt.Rows[i]["Link"].ToString();
            sDescripcion = dt.Rows[i]["Descripcion"].ToString();
            Response.Write((i + 1).ToString("0000") + 
		"- <a href='" + sLink + "'>" + 
		sTitulo + "</a><b>(" + 
		sApartado + ")</b><br>" + sDescripcion + "<br>");
         }
         Response.Write("</p>");
    }
    Response.Write("</font></p>");
}
</Script>

<html>
<head>
<title>Acceso a datos usando ADO.NET (código de C#)</title>
</head>

<BODY bgcolor="#FFFFFF" text="#000000">


<hr noshade size="3">
</body>
</html>

 


la Luna del Guille o... el Guille que está en la Luna... tanto monta...