 |
 |
 |
 |
 |
 |
|
DESS TIMH
|
Introduction au langage Perl
|
 |
|
- Accès aux bases de données : dbperl

Un des aspects les plus intéressants de Perl. Il permet d'intégrer des requêtes SQL dans un
programme.
Depuis Perl version 5, on accède de la même manière à une base de données quelque soit le
système choisi. Auparavant l'accès était différent si on utilisait Oraperl (Oracle), ou Syperl
(
Sybase)... Maintenant on utilise un module DBI (database interface), et on spécifie à la connexion
que l'on travaille sur une base Oracle, ou Ingres, ou Sybase...
Quand on installe Perl, il faut installer un « module » DBI, et un « module » DBoracle.
Au LIM nous utilisons Oracle (sur Unix uniquement)
Voici quelques commandes à utiliser pour accéder aux bases de données.
* use DBI; En début de programme spécifie que l'on va faire de l'accès aux bases de données
-
$dbh = DBI->connect("dbi:Oracle:cours", 'nom/mot-de-passe'); =>
Connexion à Oracle, sur la base de données qui s'appelle « cours », avec le l'utilisateur nomet
son mot de passe
|
 |
|
|

=> Pour se déconnecter de la base de données en fin de programme
|
 |
|
-
$dbh->do("requête");=> Pour exécuter une requête SQL.
A n'utiliser qu'avec des requêtes du genre create table, updatenom-table, insertinto
nom-table...
Il est préférable de traiter une erreur éventuelle dans ce genre d'opération (requête SQL mal
formulée, connexion interdite, ...). On le fait de la même manière que pour la détection des
erreurs dans l'ouverture de fichier :
$dbh->do("requête") || die "Pb de requête : $DBI::errstr";
(l'erreur est une erreur ORACLE, c'est pourquoi on utilise la variable $DBI::errstr)
-
Pour une requête de type selecton va procéder en quatre temps :
- préparation de la requête (prepare)
- exécution (execute)
- parcours de chaque ligne retournée par la requête (fetchrow_array), dans une
boucle
- fin de la requête (finish)
|
 |
|
|
 |
|
Il est possible de paramétrer une requête, en mettant des points d'interrogation dans la requête au
niveau du prepare, les paramètres seront spécifiés dans le execute.
|
 |
|
http://www.med.univ-rennes1.fr/~poulique/cours/perl/
|
Page 35
|
 |