CLI et APIs standards
Le standard CLI (Call Level Interface) a été créé dans les années 90 par le SQL Access Group (SAG) pour permettre à tous les SGBDRs d’intéragir de manière normalisé avec des langages de programmation.
CLI est donc une interface standard de programmation : une ‘Application Programming Interface’ ou A.P.I
Pour + d’nfos voir : http://www.tar.hu/sqlbible/sqlbible0117.html
O.D.B.C (Open database Connectivity) de Microsoft est par exemple conforme à ce standard.
Concrètement cela veut dire que si l’on comprend la logique d’un programme PHP/mysqli, ou PHP/PDOMySQL, on pourra facilement écrire un programme en VB pour Oracle car la séquence des opérations et leur butssont quasiment toujours les mêmes…
Logique générale standard
La logique générale d’un programme accédant à une base de données (et exemple de fonctions CLI correspondantes) est la suivante :
1. allocation handler de connexion : AllocHandle()
2. connexion : Connect()
3. allocation handler ordre SQL : AllocHAndle()
4. (préparation éventuelle de l’ordre, si paramètres…) : Prepare()
5. exécution de l’ordre (voir zoom ci après) : Execute() ou ExecDirect()
6. déconnexion : Disconnect()
7. libération des ressources : FreeHAndle()
Zoomons plus précisément sur l’exécution d’un ordre :
exemple d’application : mise à jour avec PDO
Un ordre de mise à jour simple sans paramètres
<?php
// ouverture de connexion
$dbh = new PDO(‘mysql:host=localhost;dbname=test’, $user, $pass);
…
// execution
$stmt->execute();// liberation
$dbh = null;
?>
un ordre de mise à jour avec paramètres
<?php
// ouverture de connexion
$dbh = new PDO(‘mysql:host=localhost;dbname=test’, $user, $pass);
…
// preparation de l’ordre
$stmt =$dbh->prepare(« INSERT … »);
…
// association des parametres
$stmt->bindParam(…);
$stmt->bindParam(…);
…
// execution
$stmt->execute();// liberation
$dbh = null;
?>
Un ordre SELECT est un peu plus compliqué car il faudra après l’exécution récupérer les lignes par une série de ‘fetch’ et bein sûr…les afficher en les formattant correctement.