Tutoriel Java N°12 : accès base de données MySQL

Maîtrisez l’insertion et la récupération de données dans une base de données MySQL. Installez le Driver MySQL Connector, qui possède les implémentations pour la base MySQL des interfaces Connexion, Statement, ResultSet de l’API java.sql. Apprenez ensuite à Packager votre livraison pour la mise en production. Identifiez enfin les opportunités d’amélioration du code

Prérequis

- Connaissance de JAVA.

Objectifs

- Mettre en oeuvre l’API JDBC java.sql
- Comprendre les étapes clés pour l’insertion de données
- Comprendre les 6 étapes clés pour la récupération de données
- Découvrir javax.sql

Liens utiles

- 200 tutos java Objis
- Objis, spécialiste formation java depuis 2005
- Déploiement Jar sur Tutoriel Java officiel Oracle

Durée

- 30min

Programme

- Partie 1 : création du projet
- Partie 2 : ajout du driver JDBC MySql
- Partie 3 : création table
- Partie 4 : Insertion données en base
- Partie 5 : récupération de données
- Partie 6 : création livraison en production (sans manip MANIFECT.MF)
- Partie 7 : création livraison en production (avec manip MANIFECT.MF)
- Partie 8 : optimisations

Partie 1 : projet eclipse demojdbc

- A partie d’Eclipse (Standard ou Entreprise), Menu File->New

L’écran suivant apparaît.

- Ajoutez le nom du projet (ici demojdbc) dans le champ ’Project Name’, puis appuyez sur bouton ’Next’.

L’écran suivant apparaît.

Eclipse déposera les fichiers compilés (.class) dans le répertoire bin.

- Cliquez sur ’Finish’

Le projet apparaît dans la vue ’Explorateur de package’.

Création package et classe

- Cliquez droit sur src->new->Class

L’écran suivant apparaît.

- Entrez dans le champ Name le nom de classe : DemoJdbc
- Entrez dans le champ Package le nom du package dans lequel la classe sera : com.objis.demojdbc
- Cochez la case ’public static void main()’ afin de lancer l’application à partir de cette classe.

Pui bouton Finish. Eclipse met à jour la vue Explorer.

Partie 2 : Ajout du driver JDBC

Librairie du projet (Driver JDBC) et CLASSPATH eclipse

Créez un répertoire lib à la racine du projet

Dans ce répertoire importez le driver jdbc :
- cliquez-droit puis import

General/File System

naviguez dans votre système jusqu’à trouver le driver (ici mysql-connector-java-5.0.5.jar, récupéré suite au dézippage de ZIP Driver )

- Cliquez sur Finish

Le driver apparaît dans la vue.

Informez Eclipse de l’existence de ce driver

- Cliquez-droit sur le projet->properties. L’écran suivant apparaît.

Dans l’onglet ’Librairies’ cliquez sur bouton ’Add Jars’ car le driver est déja dans le projet (Sinon il faudrait cliquer sur Add External Jars)

- sélectionnez le driver puis OK

Le driver apparaît désormais dans ’Referenced librairies’.

Partie 3 : création table

En utilisant le client PhpMyAdmin, créer :
— Une base de données ’formation’
— une table ’javadb’ possédant une seule colonne ’personne’

- Expliquez

Partie 4 : insertion de données

Code d’accès aux données

Créez une méthode sauverEnBase() suivante, qui prend en paramètre une chaîne de caratère à insérer en base de données.

Cette méthode statique sera apellée à partir de la méthode main() et donc au lancement de l’application.

QUESTION 1 : Dans quel package se trouve Connection ? Est-ce une Classe ou une interface ?

QUESTION 2 : à quoi sert le code : Class.forName ?

QUESTION 3 : à quoi sert le ’try / catch’ ?

QUESTION 4 : y a t’il une autre façon de gérer les erreurs potentielles ?

QUESTION 5 : à quoi sert le bloc ’finaly’ ?

- cliquez-droit sur la classe DemoJdbc->Run As->Java Application.

- 

La données a bien été insérée en base de données.

Partie 5 : lecture de données

Ci-dessous le code de récupération de données

Résultat

Nous avons récupérés les informations en base de données.

Code du projet

Zip - 486.4 ko
demo java jdbc

Partie 6 : livraison en production (sans manipulation du Manifest)

- Créer un répertoire ’livraisons’ vide
- copier / coller dans ce répertoire le répertoire ’lib’ dans lequel vous avez copié le Driver

PNG - 2.8 ko
tutoriel-objis-deploiement-appli-jdbc-1

En s’appuyant sur la création de livrable, créer dans ce répertoire livraison le livrable demojdbc.jar

- Cliquer droit sur le projet dans eclipse
- Export

PNG - 14.1 ko
tutoriel-objis-deploiement-appli-jdbc-2

L’écran suivant apparaît

PNG - 24.4 ko
tutoriel-objis-deploiement-appli-jdbc-3

Notez que par défaut vous vous apprêtez donc à créer un livrable contenant : le source ompilé (ça on en a besoin), le driver (on l’a déja), et fichier eclipse .project et .classpath (on en a pas besoin en production !)

- Spécifiez le répertoire dans lequel vous allez créer le livrable aussi.

- Décochez tout ce qui n’est pas strictement lié au code source.

L’écran devient :

PNG - 25.4 ko
tutoriel-objis-deploiement-appli-jdbc-4

- Next

PNG - 17.1 ko
tutoriel-objis-deploiement-appli-jdbc-5

- Next

PNG - 17.2 ko
tutoriel-objis-deploiement-appli-jdbc-6

- Next

PNG - 3.8 ko
tutoriel-objis-deploiement-appli-jdbc-7

Notez la petite taille du livrable. C’est une bonne pratique d’essayer d’avoir toujours un livrable de la taille la plus petite possible (on met juste ce qu’il faut).

Lancez la commande suivante à partir du répertoire livraisons : java -cp demojdbc.jar com.objis.demojdbc.DemoJdbc

Expliquer l’option -cp

PNG - 26.1 ko
lancement-v0

- Expliquez

Lancez la commande suivante : java -cp demojdbc.jar ;lib/mysql-connector-java-5.0.5-bin.jar com.objis.demojdbc.DemoJdbc

PNG - 6.9 ko
lancement-v1

Partie 7 : livraison en production (avec manipulation du Manifest)

- Créer à la racine du projet un répertoire ’META-INF’
- Dans ce répertoire, créer un fichier texte MANIFEST.MF suivant

PNG - 14.1 ko
tutoriel-objis-deploiement-appli-jdbc-8bis

- Expliquer les 4 lignes du fichier

PNG - 25.5 ko
tutoriel-objis-deploiement-appli-jdbc-9

- 

PNG - 17.7 ko
tutoriel-objis-deploiement-appli-jdbc-10

- 

PNG - 17.3 ko
tutoriel-objis-deploiement-appli-jdbc-11

- 

PNG - 17.3 ko
tutoriel-objis-deploiement-appli-jdbc-12

- 

PNG - 9.6 ko
tutoriel-objis-deploiement-appli-jdbc-13

- 

PNG - 23.7 ko
tutoriel-objis-deploiement-appli-jdbc-14

- 

PNG - 4.5 ko
tutoriel-objis-deploiement-appli-jdbc-15

Vous venez de créer une deuxième version de votre livrable. L’intérêt ici est que vous allez pouvoir lancer l’application uniquement avec la commande : java -jar demojdbc2.jar

PNG - 2.6 ko
tutoriel-objis-deploiement-appli-jdbc-16

CORRECTION

- Projet eclipse
- Livraisons avec et sans manipulation MANIFEST.MF

Zip - 979.2 ko
demojdbc-deploiement-jar

Partie 8 : optimisations

- Question : qu’est ce qu’un ’PraparedStatement’ ? Quelle différence avec un Statement ?

- Proposez un refactoring du code en utilisant les PreparedStatements. Quel avantage ?

- Proposez une meilleure stratégie de gestion des exceptions. En particulier, créez un package java ’exceptions’ et créezz une exception ’DataBaseException’ héritant de la classe Exception et dont la méthode getMessage() sera redéfinie pour renvoyer le message ’ERREUR ACCES BASE DE DONNEES’

- Coté sécurité, citez au moins une faille à laquelle ce code s’expose. Comment s’en prémunir ?

Conclusion

Dans ce tutoriel, vous avez découvert les étapes clés de connexion à une base de données relationnelle avec JAVA.

formation.sql.