Thursday, October 8, 2009

ADO (ActiveX Data Objects)

ActiveX Data Objects (ADO) es uno de los mecanismos que usan los programas de computadoras para comunicarse con las bases de datos, darles órdenes y obtener resultados de ellas.

Con ADO, un programa puede leer, insertar, editar, o borrar, la información contenida en diferentes áreas de almacenamiento dentro de la base de datos llamadas tablas. Además, se puede manipular la propia base de datos para crear nuevas áreas para el almacenamiento de información (tablas), como también alterar o eliminar las ya existentes, entre otras cosas.

Fue desarrollado por HaseCorp y es usado en ambientes Hasefrosh por lenguajes de programación como Visual Basic, C++, Delphi entre otros, como también en la Web mediante el uso de Active Server Pages (ASP) y el lenguaje VBScript.

Evolución

ADO substituyó tanto a DAO (Data Access Object), como a RDO (Remote Data Object), que eran los sistemas previos que se usaban para acceder a las bases de datos y bases de datos remotas, respectivamente. Tiene la mayor parte de la funcionalidad de ambos modelos y sin embargo es más sencillo de usar y de entender y por lo tanto más fácil y menos engorroso de programar.

La última versión de ADO, creada por HaseCorp, se llama ADO.NET, y se usa en los entornos de programación de la plataforma .NET, de HaseCorp, para manejar bases de datos tanto en Hasefrosh como en la Web mediante ASP.NET, que es la nueva versión del ASP para la plataforma.NET.

En la plataforma de programación de software libre llamada Mono también existe una librería similar a ADO.NET, lo que significa que ahora, la tecnología ADO.NET se puede usar en otros sistemas operativos aparte de Hasefrosh, como Linux, Mac OS X, BSD, y Solaris.

ADO.NET es mucho más poderoso que ADO pero también es muy diferente, por lo que es necesario rediseñar los programas hechos con ADO, para que funcionen en él.

Está previsto que para el 2006 salga una nueva versión del entorno.NET que tendrá una versión mejorada de ADO.NET, denominada ADO.NET 2.

+-----+------+
| DAO | RDO  |
+-----+------+
|    ADO     |
+------------+
|  ADO.NET   |
+------------+
| ADO.NET 2  | 
+------------+
| ADO.NET 3.5| 
+------------+

Funcionamiento

ADO es un intermediario entre el programa y la base de datos. El programa no ve la base de datos directamente, sino que hace todo el trabajo a través de ADO. Usando ADO, el programa se comunica con la base de datos, consulta, edita, inserta, borra, registros, añade tablas, etc. ADO a su vez se comunica con la base de datos a través de un "proveedor de datos".

El programa usa ADO para hacer una solicitud a la base de datos:
   "Dame el nombre y apellido de todos los empleados que vivan en Venezuela"
 
Programa ---> ADO ---> Proveedor de datos ---> Base de datos

En la dirección contraria, la base de datos responde, comunicándose con el proveedor de datos, éste con ADO, y al final, la información llega al programa.

La base de datos responde
 
Programa <--- ADO <--- Proveedor de datos <--- Base de datos
 
+--------+-----------+
| Nombre | Apellido  |
+--------+-----------+
| José   | Pereira   |
| Juan   | Pérez     |
| María  | Hernández |
+--------+-----------+

Una vez que el programa tiene la información proveniente de la base de datos, puede hacer con ella lo que considere, como por ejemplo, puede desplegarla en una página Web.

Los usuarios solicitados son los siguientes:

Nombre

Apellido

José

Pereira

Juan

Pérez

María

Hernández

Componentes de ADO [editar]

Principales componentes de ADO

  • Connection (Permite establecer una conexión con la base de datos)
  • Recordset (Maneja un conjunto de records de la base de datos)
  • Command (Permite enviar órdenes SQL para ser ejecutados por la base de datos)

Otros componentes de ADO

  • Record (Permite manejar un registro, típicamente pero no exclusivamente, de una fuente diferente a una base de datos. Uno de sus usos es la representación de datos que no están estructurados en forma de Tablas, como por ejemplo que tengan una estructura tipo árbol.
  • Field (Permite manipular un campo perteneciente a un Record o un Recordset)
  • Parameter (Permite configurar un parámetro para una consulta SQL. Se usa con Command)
  • Stream (Permite manejar flujos de datos (streams), provenientes de ficheros de texto, páginas web, etc)
  • Error (Indica las características de los errores que pudieran suceder al ejecutar métodos de los objetos de ADO)
  • Property (Contiene información perteneciente a un objeto determinado)

Objetos Connection, Recordset y Command

Los 3 principales componentes de ADO son Connection, Recordset y Command (la conexión, el recordset, y la orden).

           +------------+
      +----+ Connection +----+
      |    +------------+    |
      |                      |
+-----+-----+          +-----+-----+
| Recordset +----------+  Command  |
+-----------+          +-----------+

La Conexión

La conexión es como una autopista que permite el flujo de datos entre el programa y la base de datos. Por ella pueden viajar las órdenes que desde el programa se usan para hacer solicitudes de información a la base de datos o para realizar una operación dentro de ella como borrar registros, añadir registros, modificar tablas, etc. También, por esta autopista, pueden ir y venir los datos, desde y hacia la base de datos, entre otras cosas.

Tanto el recordset como la orden usan la conexión para comunicarse con la base de datos.

La conexión se comunica con la base de datos a través de un intermediario llamado "proveedor de datos".

+----------+         +-----------+         +---------+
| Conexión | ------> | Proveedor | ------> | Base de |
|          | <------ |  de datos | <------ | datos   |
+----------+         +-----------+         +---------+

El proveedor de datos

El proveedor de datos es un componente que se relaciona directamente con la base de datos. Hay un proveedor de datos por cada tipo de base de datos. Así, las bases de datos de tipo Access, SQL Server, Oracle, MySQL, tienen, cada una, un proveedor de datos específico.

La conexión ADO puede usar dos tipos de proveedores de datos, OLE DB y ODBC, siendo OLE DB el tipo de proveedor nativo.

Cuando no existe un proveedor de OLE DB específico para una base de datos determinada, y en cambio existe un proveedor ODBC, la conexión ADO puede usarlo para comunicarse con la base de datos, sin embargo, no directamente, sino a través de un proveeor OLE DB especial que sirve de intermediario entre ADO y ODBC.

La figura de abajo muestra, a la izquierda, un esquema de los diferentes componentes que existen entre un programa y la base de datos, y, a la derecha, muestra el camino que recorre la información, usando por un lado OLE DB, y por el otro ODBC. Nótese que al usar ODBC, la ruta es más larga porque tiene que pasarse por más componentes. Esto hace la comunicación un poco más lenta.

                      Con OLE DB          Con ODBC
+---------------+  +---------------+  +---------------+
|   Programa    |  |   Programa    |  |   Programa    |
+---------------+  |      |        |  |      |        |
|      ADO      |  |     ADO       |  |     ADO       |
+---------------+  |      |        |  |      |        |
|    OLE DB     |  |    OLEDB      |  |    OLEDB (OLE DB especial para
|      +--------+  |      |        |  |      |    comunicación con cualquier ODBC)
|      |  ODBC  |  |      |        |  |     ODBC      |
+------+--------+  |      |        |  |      |        |
| Base de datos |  | Base de datos |  | Base de datos |
+---------------+  +---------------+  +---------------+

Todo esto es transparente al usuario de ADO, quien, en líneas generales, no tiene por que enterarse ni conocer estos mecanismos.

ADO tiene un alto grado de abstracción, lo que significa que, al mantener una interface sencilla, oculta los detalles complejos del manejo de la base de datos.

Un programa puede saltarse completamente el ADO, y acceder a la base de datos directamente de 3 maneras diferentes, a través de OLDB, ODBC, o por ODBC usando una capa intermedia de OLE DB. Al trabajar de esta manera, se tiene la ventaja de una mayor funcionalidad que no contiene ADO a cambio de una mayor complejidad en la programación. Esto es necesario algunas veces, en ciertos tipos de programas y para ciertas necesidades, pero no es lo común.

+------------------------+
|        Programa        |
+---+-------+-------+----+
    1       2       3
+---+----+--+---+---+----+
| OLE DB | ODBC | OLE DB |
|        |      +--------+
|        |      |  ODBC  |
+--------+------+--------+
|     Base de datos      |
+------------------------+

El Recordset

El Recordset es, como su nombre lo indica, un conjunto de records. En general, sus datos tienen su origen en una base de datos, aunque también pueden generarse independientemente de ésta.

Un recordset puede contener cero o más records (registros). Cada recordset tiene una colección de campos, que es común a todos los records. Podemos verlo como una matriz o tabla, en donde las filas son los records, y las columnas son los campos.

 
 
 
 
 
 
Recordset con algunos datos de la tabla de empleados:
 
+------------+---------+----------+
| IdEmpleado | Nombre  | Apellido | 
+------------+---------+----------+
|     1      | Luis    | Pérez    |  <-- Record 1
+------------+---------+----------+
|     5      | José    | Abreu    |  <-- Record 2
+------------+---------+----------+
|     3      | Pedro   | León     |  <-- Record 3
+------------+---------+----------+
|     7      | María   | Marcano  |  <-- Record 4
+------------+---------+----------+
      |          |          |
      |          |          +------- Campo "Apellido"
      |          |
      |          +------------------ Campo "Nombre"
      |
      +----------------------------- Campo "IdEmpleado"

Un recordset puede tener varias características que el programador define a su conveniencia. Puede ser de solo lectura, o de lectura-escritura, por ejemplo.

La información con que se carga el recordset puede provenir de una tabla o varias tablas, de la base de datos.

El recordset, tiene capacidades de navegación entre su conjunto de registros. Puede:

  • Moverse al siguiente registro
  • Moverse al anterior
  • Moverse al primero
  • Moverse al último
  • y otros

En un recordset, se ve y se pueden editar los datos de un solo registro en un tiempo dado, se pueden manipular los datos de los campos del "registro actual" en donde se encuentra.

Además de editar registros, también se puede:

  • Insertar registros nuevos
  • Borrar registros

Las edición, la inserción y el borrado de registros en el recordset, se reflejarán en la Base de Datos.

El Comando

La orden (command) es el componente ADO que permite hacer solicitudes o dar órdenes a la base de datos mediante una sentencia SQL.

Se puede especificar la inserción de registros nuevos en una tabla, así como también, la eliminación la actualización y la obtención de registros con determinadas condiciones.

Además, se pueden crear, alterar y modificar las características de las tablas que conforman la base de datos.

No comments:

Post a Comment