ADOdb

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

ADOdb est une bibliothèque d'abstraction destinée à communiquer avec différents systèmes de gestion de base de données (SGDB). Écrite au début en PHP, il existe également une version en Python.

SGDB reconnus[modifier | modifier le code]

La version PHP reconnaît un nombre important de SGDB, ceci grâce à la communauté ADOdb : MySQL, PostgreSQL, Interbase, Firebird, Informix, Oracle, Microsoft SQL Server, Foxpro, Access, ADO, Sybase, FrontBase, DB2, SAP DB, SQLite, Netezza, LDAP, et les génériques ODBC, ODBTP. Les drivers Sybase, Informix, FrontBase et PostgreSQL, Netezza, LDAP, ODBTP sont des contributions de la communauté[1].

De nombreuses applications Web, comme ACID, Zikula, Xaraya, phpWiki, Mambo, PHP GACL, TikiWiki, eGroupWare et phpLens App Server utilisent ADOdb pour leur couche d'abstraction de base de données.

Avantages[modifier | modifier le code]

ADOdb possède plusieurs avantages.

  • Il est rapide (ADOdb est l'une des couches d'abstraction libre les plus rapides sous PHP[2])
  • Il fournit des supports extensibles et portables pour les dates et la manipulation de type, ainsi que des schémas de création portables[3].
  • Il prend en charge beaucoup de fonctionnalités d'entreprise, comme les backend sessions des bases de données (avec une notification d'expiration), génération de code SQL, tables pivots, émulation de SELECT LIMIT pour toutes les bases de données, monitoring de performances.
  • Chaque version publiée est systématiquement testée pour Microsoft Access, MySQL, PostgreSQL, MS SQL Server et Oracle 9. ADOdb possède en outre une importante communauté d'utilisateurs, gage de réactivité dans les tests.
  • Il est distribué sous licence BSD, licence permissive pour ses utilisateurs

Exemples de code en PHP[modifier | modifier le code]

<?php
include('/path/to/adodb.inc.php');
$DB = NewADOConnection('mysql');
$DB->Connect($server, $user, $pwd, $db);
 
# M'soft style data retrieval with binds
$rs = $DB->Execute("select * from table where key=?",array($key));
while (!$rs->EOF) {
    print_r($rs->fields);
    $rs->MoveNext();
}
 
# PEAR style data retrieval
$rs = $DB->Execute("select * from table where key=123");
while ($array = $rs->FetchRow()) {
    print_r($array);
}
 
# Alternative URI connection syntax:
$DB = NewADOConnection("mysql://$user:$pwd@$server/$db?persist");
 
# No need for Connect or PConnect when using URI syntax

$ok = $DB->Execute("update atable set aval = 0");
if (!$ok) mylogerr($DB->ErrorMsg());


Autres possibilités :

# Updating tables
$ok = $DB->Execute("update table set col1=? where key=?",array($colval, $key));
 
# retrieving data shortcuts
$val = $DB->GetOne("select col from table where key='John'");
$row = $DB->GetRow("select col from table where key='John'");
$arr = $DB->GetAll("select col from table");
$arr = $DB->GetAssoc("select key,col from table"); # returns associative array $key=>col

# Retrieve high speed cached recordsets (cached for 3600 secs)
# Cache directory defined in  global $ADODB_CACHE_DIR. 
# CacheGetOne, CacheRow, CacheGetAll all work
$rs = $DB->CacheExecute(3600, "select orgname from users where user='JOHN'");

Prise en charge de PHP5[modifier | modifier le code]

ADOdb gère pleinement PHP5, y compris sa bibliothèque standard (SPL) et la prise en charge des exceptions. Par exemple :

$rs = $DB->Execute("select * from table");
foreach ($rs as $row) {
    print_r($row);
}

Si vous incluez le fichier adodb-exceptions.inc.php, alors ADOdb jettera des exceptions quand une erreur surviendra :

include("/path/to/adodb-exceptions.inc.php");
include("/path/to/adodb.inc.php");
$DB = NewADOConnection('oci8');  
$DB->Connect("", "scott", "tiger");
try {
   $DB->Execute("select badsql from badtable");
} catch (exception $e) {
    print_r($e);
}

Notes et références[modifier | modifier le code]

  1. Liste complète des drivers
  2. En voici les benchmarks
  3. Voir les tips portable sql

Voir aussi[modifier | modifier le code]

Liens externes[modifier | modifier le code]