25
http://emmanuel-remy.developpez.com/Java/Tutoriels/BaseDonnees/MySQL/ MySQL.htm http://emmanuel-remy.developpez.com/Java/ Chapitres traités Dans cette leçon, nous allons mettre en oeuvre notre première base de données. L'exemple proposé sera extrêmement simple, le but étant de comprendre tous les mécanismes qui sont en jeu. Le logiciel de base de données que j'ai choisi est MySQL, mais il est bien entendu possible d'en choisir un autre, le principe de connexion restant identique. Avant de commencer, il est préférable d'avoir appris au préalable toutes les notions nécessaires dans l'étude précédente. Pour finir, je suppose que le lecteur connait un minimum la syntaxe de SQL. Je ne ferai aucune étude particulière sur ce langage. Pour en savoir plus sur les principes d'une base de données Récupération du pilote de la base de données MySQL et configuration de JBuilder Il va être nécessaire de régler JBuilder pour qu'il soit capable de se connecter à la base de données MySQL, ce qu'il ne sait pas faire à priori. D'après ce que nous avons étudié au préalable, la connexion ne s'effectue qu'au travers d'un pilote qui doit être récupéré soit par le fournisseur de la base de données ou éventuellement sur Internet. Au moment où j'écris ce cours, le pilote s'appelle “MySQL Connector/J 3.0.4 Gamma”, vous avez, bien entendu, la version pour Linux (tar.gz) et la version pour Windows (zip). Dernière version stable d’un pilote JDBC pour MySQL : http://www.mysql.com/downloads/api-jdbc-stable.html N'oubliez pas qu'un pilote est constitué d'un ensemble de classes Java qui sont localisées au sein d'une bibliothèque (jar). La première

48114_Connexion Entre JBuilder Et MySQL

Embed Size (px)

DESCRIPTION

Jbulilder MYSQL

Citation preview

http://emmanuel-remy

http://emmanuel-remy.developpez.com/Java/Tutoriels/BaseDonnees/MySQL/MySQL.htmhttp://emmanuel-remy.developpez.com/Java/

Chapitres traits Dans cette leon, nous allons mettre en oeuvre notre premire base de donnes. L'exemple propos sera extrmement simple, le but tant de comprendre tous les mcanismes qui sont en jeu. Le logiciel de base de donnes que j'ai choisi est MySQL, mais il est bien entendu possible d'en choisir un autre, le principe de connexion restant identique. Avant de commencer, il est prfrable d'avoir appris au pralable toutes les notions ncessaires dans l'tude prcdente. Pour finir, je suppose que le lecteur connait un minimum la syntaxe de SQL. Je ne ferai aucune tude particulire sur ce langage.

Pour en savoir plus sur les principes d'une base de donnesRcupration du pilote de la base de donnes MySQL et configuration de JBuilderIl va tre ncessaire de rgler JBuilder pour qu'il soit capable de se connecter la base de donnes MySQL, ce qu'il ne sait pas faire priori. D'aprs ce que nous avons tudi au pralable, la connexion ne s'effectue qu'au travers d'un pilote qui doit tre rcupr soit par le fournisseur de la base de donnes ou ventuellement sur Internet. Au moment o j'cris ce cours, le pilote s'appelle MySQLConnector/J3.0.4Gamma, vous avez, bien entendu, la version pour Linux (tar.gz) et la version pour Windows (zip).

Dernire version stable dun pilote JDBC pour MySQL : http://www.mysql.com/downloads/api-jdbc-stable.htmlN'oubliez pas qu'un pilote est constitu d'un ensemble de classes Java qui sont localises au sein d'une bibliothque (jar). La premire dmarche, aprs avoir rcupr ce fichier compress, va tre d'extraire cette bibliothque et de la placer un endroit convenable.

Le fichier que vous venez de rcuprer comporte beaucoup plus que la bibliothque, et il est relativement consquent. Aprs avoir dcompress l'ensemble de ce fichier, introduisez-vous au sein des rpertoires pour la localiser.

Vous pouvez, ds lors, dplacer cette bibliothque et la placer un endroit qui sera plus judicieux pour JBuilder. En toute rigueur, nous aurions pu la laisser cet endroit. Aprs tout, JBuilder est capable de localiser une bibliothque n'importe o sur le disque dur. Personnellement, je prfre la placer avec les autres, c'est dire dans le rpertoire prvu cet effet ; savoir lib (pour library ou en franais bibliothque). Je vous invite avoir la mme dmarche.

Il ne nous reste maintenant plus qu' configurer JBuilder pour qu'il reconnaisse cette bibliothque afin qu'elle puisse tre intgre automatiquement dans les applications grant les bases de donnes (pour une connexion avec MySQL, bien entendu).

En fait, c'est une technique que nous connaissons dj, aprs tout c'est une bibliothque comme une autre.

Pour en savoir plus sur les bibliothquesDans JBuilder, faites appel au menu Outils, et choisissez la rubrique Configurer les bibliothques....

Dans la bote de dialogue Configuration des bibliothques, cliquez sur le bouton Nouveau... pour intgrer cette bibliothque au sein de JBuilder. Vous en profiterez pour choisir un nom votre convenance qui soit facile retenir pour la suite. Par ailleurs, souvenez-vous qu'il est ncessaire de spcifier l'emplacement. Pour que tout le monde puisse y avoir accs et en plus dans n'importe quel projet, j'ai choisi l'emplacement JBuilder.

Aprs ces dsignations, cliquez sur le bouton Ajouter.... Il suffit maintenant de localiser l'archive. Souvenez-vous que nous venons de la placer dans le rpertoire lib de JBuilder.

Il suffit maintenant de cliquer deux fois sur Ok pour valider notre slection. Du coup, cette fois-ci, le pilote est bien intgr JBuilder.

Souvenez-vous qu'il est possible que ce pilote (cette bibliothque) soit automatiquement intgr chaque projet en rglant Proprit du projet par dfaut..., qui se trouve dans le menu Projet. Je n'appliquerais pas cette dmarche parce que tous les projets n'utilisent pas systmatiquement les bases de donnes.

Utilisation des objets DataExpress pour assurer la connectivit et excuter la premire requte

Base de donnes EntrepriseAvant de s'intresser la connexion proprement dite, vous allez mettre en oeuvre une base de donnes trs simple que vous appellerez Entreprise et qui comportera une seule table dnomme Personnel, dont voici les caractristiques.

Vous complterez la table par quelques valeurs de champ comme avec l'exemple propos ci dessous.

Connexion avec la base de donnes

Nous allons nous occuper d'tablir la connexion entre JBuilder et la base de donnes que nous venons d'laborer. Pour cela, vous allez construire un nouveau projet que vous appellerez, par exemple, Entreprise.

Attention, il faut demander intgrer la description du pilote et donc la bibliothque que nous avons mise en oeuvre dans le chapitre prcdent. Dans l'tape 2 de l'expert projet, il est ncessaire alors de cliquer sur le bouton Ajouter... qui se situe dans l'onglet Bibliothques ncessaires. Comme nous avons pris soin de donner un nom vocateur, il est facile de retrouver cette bibliothque dans la zone JBuilder.

Dans ce projet vous allez demander intgrer une nouvelle application grce l'expert appropri. Vous appelerez cette application Application et la fentre correspondante Cadre.

Nous avons maintenant notre disposition la fentre de l'application qui va servir de conteneur la partie visuelle de la base de donnes. Placez-vous en mode conception pour placer tout ce que nous avons besoin de faon rapide et en toute facilit. Le composant qui s'occupe de la connexion JBDC avec un serveur distant est DataBase. Selectionnez-le dans la palette de composants DataExpress et profitez-en pour lui donner un nom vocateur comme par exemple baseDonnes.

La proprit importante pour ce composant est connection. En effet, c'est grce elle que nous allons prciser la base de donnes mettre en relation ainsi que le pilote slectionner pour le gestionnaire de pilote JDBC. J'ai dj voqu que le pilote lui-mme est une classe qui porte souvent le nom quivalent en anglais, savoir Driver. En consultant l'archive (la bibliothque) que nous avons tlcharge, vous remarquez effectivement le nom de cette classe. Il est alors important de bien noter tout le cheminement pour y accder com.mysql.jdbc.Driver.

Dans le paquetage que nous avons rcupr, en plus de la bibliothque, nous avons un certain nombre de fichiers, notamment le fichier README qui vous informe justement sur les syntaxes utiliser ainsi que le nom du pilote choisir.

Maintenant que nous connaissons les caractristiques intressantes, nous pouvons rgler la proprit connection. Il suffit de faire apparatre la bote de dialogue correspondante en cliquant sur le bouton .... Le systme vous propose une liste de noms de pilote par dfaut. Quelques uns sont crits en noir, cela veut dire qu'ils sont dj installs. D'autres sont crits en rouge, dans ce cas ils ne sont pas installs, il sera alors ncessaire de les rcuprer. Dans cette liste n'apparat pas le nom de notre pilote, ce n'est pas grave, il suffit de l'crire tout simplement. Pour l'URL, vous avez toujours la syntaxe suivante jdbc:mysql:// suivi du nom de l'ordinateur serveur de base de donnes, suivi du nom de la base dont nous avons besoin. Pour le droit d'accs, il est ncessaire de spcifier votre nom suivi de votre mot de passe. Avant de valider, il faut systmatiquement tester la connexion.

Normalement, la base de donnes ne se situe pas spcialement sur votre ordinateur. Il est possible que la connexion n'arrive pas s'tablir correctement. Il est peut-tre ncessaire de spcifier le numro de port (3306 par dfaut) du serveur MySQL votre URL, ce qui donnerait : jdbc:mysql://pentium:3306/EntreprisePar ailleurs, MySQL possde ses propres protections, notamment par rapport une connexion intervenant de l'extrieur. Il faut que vous ayez les droits d'accs requis. Je vous rappelle que c'est la commande GRANT qui permet d'attribuer les privilges un utilisateur.

Mise en oeuvre de la premire requte SQLNous sommes en contact avec la base de donnes. Il faut maintenant faire appel la bonne table et intgrer les enregistrements qui nous intressent.

Pour cela, il est ncessaire d'excuter une requte SQL approprie. N'oubliez pas que c'est ce langage qui nous permet de nous librer du type de base de donnes utilis.

L encore, il existe un composant spcifique : QueryDataSet. Placez le sur la fiche et donnez-lui comme nom requte. La requte SQL spcifier doit tre place dans la proprit query.

Dans la bote de dialogue qui apparat, vous devez au pralable choisir la base de donnes dans la liste droulante, c'est dire spcifier le composant qui sert d'interface et qui propose la connexion, savoir un DataBase qui s'appelle ici baseDonnes. Vous crivez ensuite la requte dans le langage SQL dans la zone prvue cet effet. Voil, c'est termin. Vous voyez que c'est trs rapide. N'oubliez pas, l aussi, de tester la requte.

Dans cette requte, j'ai demand rcuprer tous les champs de la table Personnel. En dveloppant l'objet requte, sur la partie gauche de l'IDE, vous remarquez effectivement l'ensemble des champs qui compose la table. Vous remarquez qu'il est mme possible de rajouter des colonnes supplmentaires. Nous aborderons ce sujet dans une autre tude.

Dans cette table, nous avons un champ particulier idPersonnel qui est la cl primaire. Ce champ reprsente tout simplement une identification unique de l'ensemble de l'enregistrement. Bien qu'il soit extrmement utile, il n'est pas spcialement intressant pour une visualisation particulire. Je vous propose donc de le rendre non visible. Il suffit pour cela de slectionner la colonne correspondante sur la partie gauche, et de rgler la proprit visible FALSE.

Puisque nous avons des proprits pour chacun des champs, cela veut dire qu'il existe un objet associ chacun de ces champs. C'est un objet de type Column. Vous remarquez que le fait d'avoir modifi une proprit, le nom du champ est entour de crochets. Si vous consultez le code, vous remarquez galement qu'un nouvel objet de type Column a t cr.

Libration des ressources utilises pour la base de donnes lorsque nous quittons l'application

DBDisposeMonitor est un utilitaire permettant de s'assurer que les ressources d'un ensemble de donnes utilises par des contrles dbSwing orients donnes sont libres quand la fentre contenant ces contrles (gnralement un cadre) est dtruite. En particulier, quand la fentre suivie par DBDisposeMonitor est dtruite (ou, facultativement, ferme), DBDisposeMonitor cherche tous les composants orients donnes et donne leur proprit DataSet la valeur null.

DBDisposeMonitor se situe sur la palette dbSwingsupplmentaires. Il faut rgler l'objet pour qu'il soit actif lorsque nous quittons la fentre de l'application, c'est dire que vous slectionner this dans la proprit dataAwareComponentContainer.

Visualisation de la table l'aide de dbSwing avec possibilit de navigation

Nous allons maintenant crer l'interface utilisateur permettant d'afficher et de parcourir les donnes dans l'application. Nous allons placer un composant qui reprsente la table Personnel sur l'interface, mais dans un premier temps, vous allez d'abord prendre un TableScrollPane dans le concepteur qui se trouve sur l'onglet dbSwing et le placer au centre du panneau principal de votre fentre. Ce composant va permettre comme son homologue JScrollPane d'avoir des ascenseurs si le contenu de la table dpasse les capacits de visualisation de la fentre. Placez ensuite le composant JdbTable juste dessus et rgler la proprit dataSet pour que cette table soit en relation avec la requte propose dans le chapitre prcdent. Ds que vous effectuez ce rglage, vous obtenez automatiquement la visualisation des enregistrements issus de la table Personnel qui est elle mme issue de la base de donnes Entreprise.

Rajoutons les outils de navigations pour se dplacer au sein de la base de donnes. Vous allez respectivement placer un composant JdbNavToolBar sur la partie nord de la fentre, et un composant JdbStatusLabel sur la partie sud. Comme pour le JdbTable rgler la proprit dataSet sur le QueryDataSet requte. Vous pouvez, ds lors, lancer l'application dont voici le rsultat ci-dessous.

Quelques fonctionnalits intressantes l'aide des objets DataExpress

Pour rviser ce que nous venons d'apprendre, je vous propose d'laborer un autre projet et d'en profiter pour rajouter quelques fonctionnalits intressantes en utilisant les comptences des objets DataExpress. Nous allons, par exemple :

1. Proposer l'utilisateur de saisir son mot de passe chaque visualisation de la table, sa base de donnes tant considre comme sensible.

2. Proposer un affichage de la table Personnel paramtr par l'utilisateur. Il sera possible par exemple de visualiser l'ensemble des personnes comprises dans une fourchette d'ge.

3. Proposer en plus un tri suivant le nom des personnes.

Vous allez donc fabriquer un nouveau projet que vous appellerez EntreprisePlus et ajoutez une nouvelle application votre projet.

Attention : N'oubliez pas d'intgrer le pilote PiloteMySql.

Demande de mot de passe chaque utilisation de l'application

Comme pour le projet prcdent, intgrez un composant DataBase que vous appelerez baseDonnes. Activez la proprit connection pour effectuer les rglages ncessaires avec notamment le choix du pilote. Plutt que de tout rcrire, il est possible de choisir une connexion dj existante. Toutes les connexions que vous crivez sont stockes dans un historique. Le systme mmorise le pilote, la base de donnes utilise ainsi que le nom de l'utilisateur. La seule chose crire est le mot de passe, ce qui parait logique. A ce sujet, puisque nous demandons l'utilisateur de saisir systmatiquement son mot de passe chaque utilisation de l'application, vous devez cocher la rubrique Demander le mot de passe.

Attention, maintenant, chaque fois que vous utilisez cette base de donnes, on vous demandera votre autentification, mme, ventuellement, en mode conception.

Requte paramtre

Nous allons maintenant mettre en oeuvre un filtre au niveau de la requte. Toutefois ce filtre n'est pas dtermin ds le dpart, c'est l'utilisateur qui fixera les conditions. Pour ce projet, je dsire avoir un affichage de la table par rapport une fourchette d'ge. Nous allons utiliser un composant ParameterRow qui permet d'tre intgr la demande d'une requte prvu par le QueryDataSet et dont on peut dfinir un certain nombre de nouvelles colonnes qui seront utilises pour conditionner la requte.

Placez donc, toujours issu de l'onglet DataExpress, un composant ParameterRow dans le volet de votre fentre que vous appellerez ge. Vous allez ensuite crer deux nouvelles colonnes, une pour l'ge minimum, et une pour l'ge maximum. Chacune de ces colonnes reprsentera un type entier.

Slectionnez et dfinissez dans l'expecteur les proprits suivantes pour la nouvelle colonne :

PropritValeur

columnNameminimum

dataTypeINT

default25

Vous venez de mettre en oeuvre la colonne minimum. Excutez la mme procdure pour la colonne maximum en rglant les proprits suivantes :

PropritValeur

columnNamemaximum

dataTypeINT

default50

Nous allons maintenant nous occuper de la requte en intgrant ces nouvelles colonnes par l'intermdiaire de ce ParameterRow ge. Placez donc un QueryDataSet que vous appellerez requte. Comme vous avez l'habitude maintenant, activez la proprit query. Cliquez sur l'onglet Paramtres et choisissez, bien sr, l'objet qui sert de paramtres de filtre que nous venons de mettre en oeuvre, savoir ge.

Revenez sur l'onglet Requte. Slectionnez la base de donnes et crivez la requte en faisant rfrence aux colonnes minimum et maximum. Les paramtres sont prcds du symbole :. Personnellement, je prfre crire la requte directement la main. Toutefois, il est possible de raliser une criture automatique en sollicitant le Constructeur SQL..., mais je trouve qu'on perd beaucoup de temps pour trs peu de rsultat.

Je vous invite systmatiquement tester la requte avant d'aller plus loin.

Tri

Si tout se passe bien, nous allons rester sur requte et demander ce que le nom des personnes soit donn dans l'ordre alphabtique. Pour cela, vous disposez d'une proprit qui s'appelle sort. Lorsque vous activez cette proprit, vous voyez apparatre une bote de dialogue qui vous permettra d'effectuer tous les rglages ncessaires. Vous devez slectionner la colonne sur laquelle vous allez effectuer le tri et cliquez sur le bouton Ajouter au tri. Il est possible d'avoir plusieurs colonnes, l'ordre de tri s'effectuant alors suivant l'ordre des colonnes. Vous voyez que c'est trs facile et rapide raliser, il suffit maintenant de cliquer sur OK.

Normalement, ce stade, il serait prfrable, comme nous l'avons fait sur l'application prcdente, de cacher la colonne idPersonnel. Toutefois, pour bien montrer l'efficacit du tri, nous allons laisser cette colonne visible.

Interface graphique - partie visuelle de la table avec les critres de choix

Nous allons placer un composant JdbTable sur la partie centrale de la fentre. N'oubliez pas de placer au pralable un TableScrollPane. Comme auparavant, rgler la proprit dataSet avec la valeur requte. Tous les rglages que nous avons effectus au pralable se rpercutent automatiquement. En effet, seulement toutes les personnes dont l'ge est compris entre 25 et 50 ans (valeurs par dfaut) sont affiches, et vous remarquez galement, qu'elles sont donnes dans l'ordre alphabtique.

Vous remarquez ds lors toute la puissance de ces composants. Le fait que chacun dispose de ses comptences permet d'avoir une meilleure matrise. Du coup, l'laboration d'un projet s'en trouve facilit.

Placez un JdbNavToolBar sur la partie haute de la fentre (Nord) et choisissez la requte associe. Par contre sur la partie basse, nous allons rajouter tous les composants ncessaires pour permettre le paramtrage de la requte l'excution. Comme il y en a plusieurs, vous allez placer un JPanel sur la partie basse (Sud).

Placez un JLabel et rgler la proprit text en introduisant la chane de caractres L'ge est compris entre. Vous pouvez en profiter pour rgler quelques proprits supplmentaires pour que l'affichage soit agrable, comme le choix de la fonte ainsi que la couleur du texte. Revenez ensuite dans l'onglet dbSwing pour placer un JdbTextField. Il faut nommer ce composant parce que nous y ferons rfrence par la suite. Vous le nommerez minimum.

Attention, exceptionnellement, ce composant ne fait rfrence aucune requte particulire. Je n'utilise donc pas les proprits query et columnName.

Par contre nous allons rgler quelques proprits pour que l'aspect soit agrable et surtout pour proposer la valeur de l'ge minimum par dfaut.

PropritValeur

columns3

horizontalAlignmentRIGHT

text25

Comme cela vous est montr plus haut rajouter un autre JLabel suivi d'un autre JdbTextField que vous nommerez maximum. Rgler les proprits de maximum avec :

PropritValeur

columns3

horizontalAlignmentRIGHT

text50

Enfin placer un bouton JButton que vous nommerez boutonParamtre. L'utilisateur prcisera donc les JdbTextField les nouvelles valeurs minimale et maximale de l'ge requis et validera son choix l'aide de ce bouton. Il faut donc grer l'vnement associ. Comme pour tous les boutons, slectionnez l'vnement actionPerformed.

Il faut que les colonnes minimum et maximum du ParameterRow ge soient remise jour par rapport au JbdTextField minimum et maximum. C'est se que propose les deux premires lignes du bloc try-catch. Ensuite, il faut que la base de donnes soit effectivement interroges sur ces nouveaux critres de requte. C'est ce que propose la mthode refresh de l'objet requte.

Le rafrachissement peut mal se passer. Dans ce cas l une exception DataSetException est dclenche. C'est pour cette raison qu'il est ncessaire de placer un bloc try-catch. Par contre, la gestion que je propose est trs gnrique. Si le coeur vous en dit, vous pouvez raliser une gestion beaucoup plus fine.

Excution du projet

Nous sommes prts tester notre application, il suffit de lancer l'excution. Au dpart, la bote de dialogue relative l'identification s'affiche. Vous devez donc prciser votre nom et votre mot de passe.

A la suite de quoi, vous obtenez la fentre de votre application. Remplacez les critres de slection en demandant, par exemple, toutes les personnes de 10 70 ans.

Conclusion

Cette tude vous a donn une approche de ce qu'il est possible de faire l'aide notamment des composants DataExpress. Une fois que nous avons compris le concept, la mise en oeuvre est rapide et relativement simple. Trs peu de code a t crit. Il est possible d'aller plus loin avec ces composants. Plus tard, nous ferons une tude plus pousse sur les DataExpress et sur les dbSwing.

Pour en savoir plus sur les DataExpress et les dbSwing.

Outil Pilote de base de donnesConsultation

Pour terminer, je vous invite prendre connaissance d'un outil particulirement intressant Pilote de base de donnes, qui s'active par le menu Outils/Pilote de base de donnes.

Cet outil recense les connexions que vous avez dj ralises. Il est possible de visualiser le contenu complet de toutes vos bases de donnes, notamment par exemple, les dfinitions de chacunes des colonnes d'une table. Par contre, pour chacune des connexions, on vous demandera de vous identifier.

Mieux encore. Vous pouvez consulter le contenu de chacune des tables. Vous retrouvez finalement le mme outil de navigation que nous avons mis en oeuvre dans notre application.

Nouveau pilote dans la liste de l'expert ConnectionCe qui va particulirement nous intresser avec cet outil, c'est que nous allons enfin pouvoir intgrer dfinitivement notre pilote dans la liste qui est propose par l'expert Connection de JBuilder. Avant cela, je vous invite vrifier toutes les caractristiques de ce pilote afin de permettre des rglages appropris. Il suffit pour cela de cliquer sur la connexion dsire.

Pour spcifier un nouveau pilote dans la liste de l'expert Connection, cliquez sur la rubrique Option... qui se trouve dans le menu Voir. La bote de dialogue Options apparat. Slectionnez l'onglet Pilotes et cliquez sur le bouton Ajouter.... On vous demande alors de spcifier la classe qui correspond au pilote. Ds que vous avez valid votre nom de pilote, il apparat en fin de liste.

Il devient judicieux maintenant de donner un exemple d'URL en spcifiant la syntaxe la plus prcise possible pour viter de rcrire systmatiquement la mme chose. Le serveur de base de donnes se situe gnralement sur le mme poste. Du coup, nous avons pratiquement toujours la mme syntaxe. Ce qui fait la diffrence entre une application et une autre, le plus souvent, c'est tout simplement le choix de la base de donnes. Finalement pour mon exemple, j'aurais systmatiquement la syntaxe jdbc:mysql://pentium/.

Vrification

Cette fois-ci, si nous plaons un composant DataBase, et que nous slectionnons la proprits connection, notre pilote apparat bien dans la liste, et en plus, son nom est de couleur noire, ce qui signifie qu'il est parfaitement reconnu.

Ds que nous slectionnons le pilote, vous remarquez que l'URL que nous avons prcdemment choisi se place automatiquement. Vous n'avez plus, ds lors, qu' choisir votre base de donnes et vous identifier.

_1143245331.unknown