Aller au contenu

ADOdb

Un article de Wikipédia, l'encyclopédie libre.
ADOdb

Informations
Dernière version 5.22.7 ()[1]Voir et modifier les données sur Wikidata
Dépôt github.com/ADOdb/ADOdbVoir et modifier les données sur Wikidata
Écrit en PHP et PythonVoir et modifier les données sur Wikidata
Type Bibliothèque PHP (d)Voir et modifier les données sur Wikidata
Licence Licence BSDVoir et modifier les données sur Wikidata
Site web adodb.sourceforge.net et adodb.orgVoir et modifier les données sur Wikidata

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

La version PHP reconnaît un nombre important de SGBD, 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é[2].

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.

ADOdb possède plusieurs avantages.

  • Il est rapide (ADOdb est l'une des couches d'abstraction libre les plus rapides sous PHP[3])
  • Il fournit des supports extensibles et portables pour les dates et la manipulation de type, ainsi que des schémas de création portables[4].
  • 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]

Liens externes

[modifier | modifier le code]

Sur les autres projets Wikimedia :