Comment récupérer les réponses des requêtes qui ne sont pas de type 'SELECT'
Bonjour,
J'utilise le module DBI pour accéder à une base de donnée MySQL.
Après avoir lu le cours "Perl et les bases de données (DBI)" je suis parvenu sans problème à exécuter des requêtes et à récupérer les lignes réponses.
Cependant, il me semble que toutes les requêtes ne renvoient pas un tableau de plusieurs lignes, caractéristique des requêtes de type 'SELECT'.
Par exemple, lorsque l'on exécute une requête du type 'CREATE TABLE', il n'y a pas production d'un tableau de lignes, et lorsque l'on exécute ce type de commande avec la console MySQL Command Line Client, la réponse renvoyée pour signaler que l'opération s'est bien passée est :
'Query OK, 0 rows affected (0.05 sec)'
Pour les commandes comme 'CREATE TABLE', 'CREATE VIEW', 'DROP TABLE', 'DROP VIEW'..., comment peut on récupérer cette information ?
Pour plus de précision, voilà la méthode utilisée pour les requêtes 'SELECT', qui ne fonctionne pas dans le cas mentionné :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
#1) Connexion à la base de données
my %attr = ( PrintError => 1, RaiseError => 0 );
my $BaseDeDonnees = 'test';
my $NomHote = 'localhost';
my $MotDePasse = '';
my $dbh = DBI->connect( "dbi:mysql:dbname=$BaseDeDonnees;host=$NomHote;",$login, $MotDePasse, \%attr )
or die "Connection impossible à la base de donnees $BaseDeDonnees!";
#2) Contenu de la requête
my $requete = CREATE TABLE test(
nom VARCHAR(25),
prenom VARCHAR(15),
date_naiss DATE,
adresse VARCHAR(30),
ville VARCHAR(15),
code_postal VARCHAR(5),
PRIMARY KEY (nom,prenom)
)ENGINE MyISAM;
#3) Préparation de l'exécution
my @lignes_reponse_SQL;
my $prep = $dbh->prepare($requete);
$prep->execute() or die "Echec requete\n";
while ( my @une_ligne = $prep->fetchrow_array ) {
push( @lignes_reponse_SQL, \@une_ligne); # On stocke une référence du tableau contenant une ligne
}
$prep->finish(); |
Merci d'avance à tous ceux qui pourront m'aider.
Krys006