Ici nous allons un peu nous amuser en manipulant des sessions afin de voir exactement ce qu'il ce passe, ce qui permettra à ceux n'ayant pas tout compris de lever le voile à travers une manipulation qui se veut simple mais néanmoins complète.
Nécessaire :
- 1 serveur MySQL 4.1 ou supérieur (disponible sur le site officiel
www-fr.mysql.com) avec si possible une installation par défaut.
- la base de données WORLD en .sql disponible sur le
site officiel MySQL.
Bien, maintenant que vous avez votre serveur MySQL installé, il est temps de passer à la manipulation proprement dite, pour cela nous allons ouvrir une première fenêtre MySQL en ligne de commande (
Démarrer->
Programmes->
MySQL->
MySQL Server 4.1->
MySQL Command Line Client.
Là, si vous avez effectué correctement la manipulation, vous devriez avoir une petite fenêtre qui est ouverte vous demandant un mot de passe
(celui que vous avez mis à l'installation), une fois le mot de passe accepté, vous arrivez sur le prompt de MySQL qui se présente sous la forme :
mysql>, ce prompt est juste là comme point de repère et n'implique rien, vous pouvez donc le changer à votre convenance, dans notre cas, nous allons le renommer afin de nous y retrouver parmi les différentes fenêtres qui seront ouvertes en fin de manipulation.
Tapez => prompt fenetre1> et validez.
Comme vous pouvez le remarquer, le prompt a changé

Maintenant que ceci est fait, ouvrez une deuxième fenêtre de la même manière et changez-en le prompt en
fenetre2>.
A ce point de la manipulation, nous avons deux fenêtres MySQL qui sont ouvertes si tout est correct.
Rendez-vous sur la première fenêtre et
tapez => SHOW processlist; et validez.
Un tableau s'affiche vous récapitulant des informations, en l'occurence, cela vous indique que vous avez deux sessions de lancées avec respectivement le numéro de session, l'utilisateur connecté, l'hôte et son port de connexion, la base de données où se trouve l'utilisateur
(égale à NULL pour le moment ce qui est normal), et diverses autres choses dont le info qui vous permet de voir la session qui a effectué le
SHOW processlist;.
A ce stade, nous voyons que chaque session est normalement indépendante de l'autre mais afin de nous en assurer, passons à la suite de la manipulation.
Bien maintenant dans une des deux fenêtres, entrez ceci :
Code : SQL1
2 | CREATE DATABASE world;
USE world;
|
et validez dans les deux fenêtres. Ceci nous a permis de créer une base de données appelée
world et de se rendre dessus.
Il est maintenant nécessaire de la remplir, pour cela nous allons avoir besoin du world.sql que vous avez normalement récupéré
(voir Nécessaire), ouvrez le répertoire où il est stocké.
Maintenant,
tapez =>
source mais sans valider puis faites glisser le fichier world.sql dans la fenêtre ou vous avez tapé ceci. Vous devriez donc maintenant être en présence d'une chose dans ce genre :
source "lecteur:\repertoire\world.sql"
Bon ce n'est pas fini, virez les guillemets puis ajoutez
; à la fin. Vous êtes désormais en présence de quelque chose sous la forme :
source lecteur:\repertoire\world.sql;
Validez et patientez un petit peu, les tables et les enregistrements sont en cours de création.
Nous allons vérifier que tous s'est bien passé en tapant ceci :
SHOW TABLES;
là vous aurez 3 tables si tout s'est déroulé correctement
(de toute façon dans le cas contraire vous aurez 1-N bips vous signalant des erreurs, ce en quoi vous avez fait une mauvaise manipulation).
Bien passons maintenant à la partie finale qui est notre but. Tester les requêtes préparées
(oui on y arrive enfin
).
Première étape, une requête préparée qui nous permettra de récupérer des pays.
Mettez-vous sur l'une des deux fenêtres sur laquelle vous resterez pour le moment et tapez ceci :
Code : SQL1
2
3 | PREPARE pays FROM 'SELECT Name FROM Country WHERE Name LIKE ?';
SET @p='%fr%';
EXECUTE pays USING @p;
|
puis validez.
Comme vous le voyez ceci vous sort la liste des pays contenant fr dans leur nom.
Vous pouvez bien sùr remplacer la valeur de la variable afin de trouver autre chose et faire des tests par vous-même. Ainsi, une fois que vous aurez modifié la variable à l'aide de
SET, vous n'aurez plus qu'à rappeler la requête avec
EXECUTE.
Remarquez qu'un oubli du
@ dans la requête EXECUTE ne provoquera qu'une erreur vous signalant une mauvaise syntaxe.
Bien maintenant passez à l'autre fenêtre et essayez de lancer une requête à l'aide :
Code : SQL
Vous aurez alors l'erreur suivante :
ERROR 1243 (HY000): Unknown prepared statement handler (pays) given to EXECUTE
Ceci est dû au fait que la requête préparée demandée n'est pas trouvée.
Conclusion, comme nous l'avons vu tout au long de ce tutorial, ceci est dû au fait que si effectivement la requête existe dans la session où elle a été déclarée, dans une autre session elle ne sera pas accessible.