ADOdb
|
ADOdb Es un paquete de librerías para PHP y Python de bases de datos que permite a los programadores crear aplicaciones Web de manera que puedan ser extraídos y/o introducidos datos desde o hacia una base de datos.
El rasgo principal reside en que la de bases de datos puede ser cambiada sin ser necesario que se tenga que reescribir el código del proyecto en cuestión, lo que ayuda a la migración por determinada causa del origen de los datos.
Está liberada bajo la licencia BSD-LGPL aunque los creadores afirman que en caso de conflicto predominaría la licencia BSD.
Esta capa de abstracción permite realizar conexiones a distintos tipos de bases de datos ya sean libres o bajo licencia propietaria tal es el caso de MySQL que sin dudas es a la que mayores aportes se le han agregado, Oracle, Microsoft SQL Server, Sybase, Sybase SQL Anywhere, Informix, PostgreSQL, FrontBase, SQLite, Interbase (con versiones de Firebird y Borland), Foxpro, Access, ADO, DB2, SAP DB y ODBC. Vale aclarar que si existe mucha compatibilidad de parte de ADOdb, es debido a los aportes de la comunidad de software libre. En algunos de los casos antes mencionados la librería aún se encuentra en fase de prueba o no están concluidos los driver que permiten la conexión con dichas bases de datos.
ADOdb y Bases de datos
Tabla demostrativa de las bases de datos a la que puede establecer conexión ADOdb y algunos parámetros comparativos en entre ellas.
Nombre | Probado | Base de datos | RecordCount() utilizable | Prerequisitos | Sistemas operativos |
access | B | Microsoft Access/JET. Se necesita crear una instancia de ODBC DSN. | S/N | ODBC | Windows |
ado | B |
Es el ADO genérico, no se puede cambiar para bases de datos específicas. Permite DSN sin conexión, para mejorar el rendimiento se recomienda el uso de un proveedor de OLEDB. ADO es la clase base de todos los driver de este tipo. |
En dependencia de la base de datos | ADO or OLEDB provider | Windows |
ado_access | B | Microsoft Access/JET usando ADO. Permite DSN sin conexión, para mejorar el rendimiento se recomienda el uso de un proveedor de OLEDB. | S/N | ADO or OLEDB provider | Windows |
ado_mssql | B | Microsoft SQL Server usando ADO. Permite DSN sin conexión, para mejorar el rendimiento se recomienda el uso de un proveedor de OLEDB. | S/N | ADO or OLEDB provider | Windows |
db2 | C | Usa extensiones especificas de PHP para db2 para mejorar su funcionamiento. | S/N | DB2 CLI/ODBC interface |
Unix y Windows. Requiere el cliente IBM DB2 Universal Database. |
vfp | A | Microsoft Visual FoxPro. Se necesita crear una instancia de ODBC DSN. | S/N | ODBC | Windows |
fbsql | C | FrontBase. | S | ? |
Unix y Windows |
ibase | B | Interbase 6 o anterior | S/N | Cliente de Interbase | Unix y Windows |
firebird | B | Versión de FireBird para Interbase. | S/N | Cliente de Interbase | Unix y Windows |
borland_ibase | C | Versión de Borland para Interbase. 6.5 superior. | S/N | Cliente de Interbase | Unix y Windows |
informix | C | Driver genérico de Informix.Se usa para Informix 7.3 o superior. | S/N | Cliente de Informix | Unix y Windows |
informix72 | C | Base de datos de Informix anterior a Informix 7.3 que no soporta la clausula SELECT FIRST. | S/N | Cliente de Informix | Unix y Windows |
mssql | A |
Microsoft SQL Server 7 ys superior. Además trabaja con MS SQL 2000. No devuelve segundos de DateTime para PHP. |
S/N | Cliente Mssql |
Windows. |
mssqlpo | A |
Microsoft SQL Server 7 ys superior. Además trabaja con MS SQL 2000. No devuelve segundos de DateTime para PHP. La diferencia con mssql es la sustitución del operador || por '+' |
S/N | Cliente Mssql |
Unix y Windows. |
mysql | A | MySQL sin soporte de transacción. | S | Cliente MySQL | Unix y Windows |
mysqli | B | Para nuevas versiones de API's de php5 | S | MySQL 4.1+ Cliente | Unix y Windows |
mysqlt o maxsql | A |
MySQL con soporte para transacciones. |
S/N | Cliente MySQL | Unix y Windows |
oci8 | A | Oracle 8/9. | S/N | Cliente Oracle | Unix y Windows |
odbc_mssql | A | Usa ODBC para laconexión con MSSQL | S/N | ODBC | Unix y Windows. |
odbc_oracle | C | Usa ODBC para laconexión con Oracle | S/N | ODBC | Unix y Windows. |
odbtp_unicode | C | ODBTP soporte UNICODE | S/N | ODBTP | Unix y Windows |
oracle | C | Implementa una vieja versión de una API's de Oracle 7 | S/N | Cliente Oracle | Unix y Windows |
pdo | C | Driver genéricos de PDO para php5 | S | Drivers específicos y extensiones de PDO | Unix y Windows. |
postgres | A | Driver genérico para base de datos PostgreeSQL. | S | Cliente PostgreSQL | Unix y Windows. |
postgres64 | A | Para PostgreSQL 6.4 y anterior que no soporte la clausula LIMIT. | S | Cliente PostgreSQL | Unix y Windows. |
postgres7 | A | Para PostgreSQL 7 y posterior que soporte la clausula LIMIT. | S | Cliente PostgreSQL | Unix y Windows. |
postgres8 | A | Ibdem a postgres7 | S | Cliente PostgreSQL | Unix y Windows. |
sqlite | B | SQLite. | S | - |
Unix y Windows. |
sybase | C | Sybase. | S/N | Cliente Sybase |
Unix y Windows. |
Leyenda
En la columna de “Probado” cada letra indica la amplitud de prueba a la que ha sido sometido cada driver.
A: Bien probado y usado por la comunidad.
B: Probado y utilizable pero con algunos rasgos que pueden no estar implementados.
C: Están en experimentación o actualmente los usuarios están contribuyendo. Pueden no soportar completamente las características de ADOdb.
Los valores de S/N, S O N indican la posibilidad de utilizar el contador de registros de la base de datos.
Uso de ADOdb para algunas bases de datos
MySQL
Pasando cuatro parámetros
<source lang="php">$conn = &ADONewConnection('mysql'); $conn->PConnect('localhost','userid','password','database');</source>
mediante DSN
<source lang="php">$dsn = 'mysql://user:pwd@localhost/mydb'; $conn = ADONewConnection($dsn);</source>
mediante DSN persistente
<source lang="php">$dsn = 'mysql://user:pwd@localhost/mydb?persist'; $conn = ADONewConnection($dsn);</source>
o a través de banderas(flags)
<source lang="php">$pwd = urlencode($pwd); $flags = MYSQL_CLIENT_COMPRESS; $dsn = "mysql://user:$pwd@localhost/mydb?persist&clientflags=$flags"; $conn = ADONewConnection($dsn);</source>
PDO
PDO solo funciona con php5 y permite cadenas de conexión de drivers específio
<source lang="php">$conn =& NewADOConnection('pdo');
$conn->Connect('mysql:host=localhost',$user,$pwd,$mydb);
$conn->Connect('mysql:host=localhost;dbname=mydb',$user,$pwd);
$conn->Connect("mysql:host=localhost;dbname=mydb;username=$user;password=$pwd");</source>
También es posible usar el mecanismo de DSN de forma similar a MySQL
<source lang="php">$conn =& NewADOConnection("pdo_mysql://user:pwd@localhost/mydb?persist");</source>
PostgreSQL
PostgreSQL 7 y 8 permiten el estilo estandard de llamado a conexión,
<source lang="php">$conn = &ADONewConnection('postgres'); $conn->PConnect('host=localhost port=5432 dbname=mary');</source>
El clásico de cuatro parámetros,
<source lang="php">$conn->PConnect('localhost','userid','password','database');</source>
O mediante DSN:
<source lang="php">$dsn = 'postgres://user:pwd@localhost/mydb?persist';
$conn = ADONewConnection($dsn);</source>
Interbase/Firebird
Se define la base de datos en el parámetro <source lang="php">$host</source>
<source lang="php">$conn = &ADONewConnection('ibase'); $conn->PConnect('localhost:c:\ibase\employee.gdb','sysdba','contraseña');</source>
o se puede definir mediante DSN
<source lang="php">$dsn = 'firebird://user:pwd@localhost/mydb?persist&dialect=3'; $conn = ADONewConnection($dsn);</source>
SQLite
Sqlite crea una base de datos que no existía y la toma como el repositorio de los datos en cuestión
<source lang="php">$conn = &ADONewConnection('sqlite'); $conn->PConnect('c:\path\to\sqlite.db');</source>
o mediante DSN
<source lang="php">$path = urlencode('c:\path\to\sqlite.db');
$dsn = "sqlite://$path/?persist";
$conn = ADONewConnection($dsn);</source>
Capas encapsuladas
Para el funcionamiento de un proyecto que use la librería ADOdb es casi inevitable el uso de objetos que permitan la conexión con el repositorio de los datos a usar, y que además hacen que la misma pueda ser leída por el sistema de forma más rápida y eficas, entre las capas o funciones más usadas están:
- Connect,
- PConnect,
- NConnect
- Execute,
- CacheExecute
- SelectLimit,
- CacheSelectLimit
- MoveNext,
- Close
- qstr,
- Affected_Rows,
- Insert_ID
Véase también