jueves, 15 de diciembre de 2011

OBJETO ADO

OBJETO ADO
(Microsoft ActiveX Data Objects - ADO). Conjunto de objetos COM para el acceso a recursos de datos. Prevé una capa entre los lenguajes de programación y las bases de datos OLE, lo que permite a los programadores escribir programas que accedan a datos, sin saber cómo está implementada la base de datos (sólo se debe tener cuidado en la conexión a la misma). Tampoco es necesario conocer sobre SQL cuando se usa ADO, aunque también pueden utilizarse comandos SQL, pero esto crearía en el programa una dependencia del tipo de base de datos usado.

En otras palabras, ADO es un mecanismo que utilizan los programas para comunicarse con las bases de datos. Forma parte de lenguajes como Visual Basic, Delphi, ASP, etc. La versión ADO.NET forma parte de la plataforma de programación .NET de Microsoft.

ADO fue introducido por Microsoft en 1996, y sustituyó tanto a DAO (Data Access Object), como a RDO (Remote Data Object), ambos sistemas se utilizaban antes para acceder a las bases de datos locales y remotas respectivamente

INTRODUCCION

En este ejemplo se accede a una base de datos de Access usando ADO.


Lo único que tenemos que hacer es:
  • Indicar que se va a usar compatibilidad con COM. Esto se consigue indicando aspcompat = true en la directiva ASP.NET indicada al principio de la página.
  • La forma de acceder a los objetos ADO (que son COM/ActiveX) ya que habrá que usar código "compatible" con punto NET, al menos en la forma de llamar a los métodos y funciones, es decir usando los paréntesis para encerrar los parámetros. Ya que por lo demás, el código es "exactamente" el mismo que se usaría con ASP y VBScript.

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(...).
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/ejemploAccessADO.aspx
Por supuesto esto sólo será posible si tienes el Windows 2000/XP Profesional o un Windows Server que tenga instalado el IIS.

En este ejemplo sólo muestro el código de Visual Basic, ya que al fin y al cabo es BScript.
 Ejemplo
<%
' Variables usadas para crear los objetos, etc.
Dim Rst, Cnn
Dim sConn, sTip
Dim sTitulo, sLink, sApartado, sDescripcion
Dim s, i

' Crear los objetos
Cnn = Server.CreateObject("ADODB.Connection")

' Crear la conexión a la base de datos
sConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
        Server.MapPath("datos\elguille.mdb") & ";"
Cnn.Open(sConn)
' Crear la cadena SQL
s = "SELECT * FROM Titulos ORDER BY Apartado ASC"
Rst = Cnn.Execute(s)

On Error Resume Next
Err.Clear
' Buscar desde el principio
Rst.MoveFirst
i = 0
Do While Not (Rst.BOF Or Rst.EOF)
    i = i + 1
    With Rst
        ' Asignar a las variables el contenido del registro
        sTitulo = .Fields("Titulo").Value & ""
        sLink = .Fields("Link").Value & ""
        sApartado = .Fields("Apartado").Value & ""
        sDescripcion = .Fields("Descripcion").Value & ""
        ' Mostrar los datos hallados
        Response.Write(i & "- <a href='" & sLink & "'>" & _
               sTitulo & "</a> <b>(" & _
               sApartado & ")</b><br>" & sDescripcion & "<br>")
    End With
    '
    ' Mostrar el siguiente registro
    Rst.MoveNext
Loop
Response.Write("<br>")
Err.Clear
If i = 0 Then
    Response.Write("<br><b>No se ha encontrado ningún registro que contenga")
    Response.Write(" lo que has especificado.</b><br>")
    Response.Write("Pulsa en este link para <b>")
    Response.Write("<a href='mostrarDatosTodo.aspx'>"
    Response.Write("Mostrar todos los registros</a></b>.<br>")
End If
'
Rst.Close
Cnn.Close

Rst = Nothing
Cnn = Nothing
'
%>

No hay comentarios:

Publicar un comentario