MODULE : Intégration des données Professeur : Mr Tallard Travaux Pratiques : Connexion et accès à la Base De Données Kamissi MOHAMED
Sommaire 1. Présentation de l énoncé... 3 2. Connexion à la base de données... 3 3. Implémentation... 4 3.1 Affichage des informations de la table etudiant... 4 3.2 Lecture du contenu à partir d un fichier texte... 5 3.3 Création des nouveaux enregistements dans la base de données... 5 4. Manuel d utilisation du programme LireEtudiant.java... 5 4.1 Généralités... 5 4.2 Compilation... 6 4.3 Exécution... 6 5. Gestion des erreurs... 8 6. Conclusion... 8 2
1. Présentation du l énoncé Le travail pratique, Connexion à la base de données, consiste à développer un programme permettant, dans un premier temps, d afficher les informations de la table <etudiant> de la base de données < etudiants> telles que : «prenom», «nom», «email», «promo». Voici un aperçu : Ensuite, nous devons lire également le contenu du fichier texte comportant des nouveaux enregistrements à insérer dans la table étudiant. Ainsi, on devrait pouvoir exécuter des requêtes pour insérer des nouveaux enregistrements dans la base de données. 2. Connexion à la base de données L'API (Application Programming Interface) JDBC, c'est-à-dire la bibliothèque de classes JDBC, se charge de trois étapes indispensables à la connexion à une base de données : la création d'une connexion à la base l'envoi d'instructions SQL l'exploitation des résultats provenant de la base Pour se connecter à une base de données, il est essentiel de charger, dans un premier temps, le pilote de la base de données à laquelle on désire se connecter grâce à un appel au DriverManager (gestionnaire de pilotes) : Class.forName("nom.de.la.classe"); Dans notre cas, voici l instruction : String pilote = "com.mysql.jdbc.driver"; Class.forName(pilote); Ensuite, il faut créer une instance de la classe Connection grâce à la méthode getconnection de l'objet DriverManager en indiquant la base de données à charger à l'aide de son URL qui s écrit ainsi : String url = "jdbc:odbc:base_de_donnees"; Connection con = DriverManager.getConnection(url); Dans notre cas, voici l instruction : String url = "jdbc:mysql://scimone141:3306/etudiants"; String root = "user"; String root= password; Connection c ; c = (Connection) DriverManager.getConnection(url, "root", "root"); 3
Le nom de la base de données (ici est étudiants) étant celle déclarée dans le panneau de configuration mysql://scimone141:3306, c'est-à-dire le nom du DSN. Tous les objets et les méthodes relatifs aux bases de données sont présents dans le package java.sql, il est donc indispensable d'importer java.sql.* dans tout programme se servant de la technologie JDBC. 3. Implémentation 3.1 Affichage des informations de la table < étudiant> Pour pouvoir afficher les informations d une table, il faut créer une instance de la classe Statement qui représente une requête vers la base de données. Les propriétés et méthodes de la classe Statement permettent de définir la requête à exécuter, de demander sa préparation et son exécution par le moteur de base de données et de récupérer les résultats éventuels. Le résultat de la requête va se retrouver dans un ResultSet. Le Resultset (résultat d une requête) est un objet spécial, on y accède ligne par ligne (méthode next) ou bien encore avec un positionnement absolu ou relatif par rapport à la ligne courante. Statement stmt = con.createstatement() ; String querystring = "SELECT nom, prix FROM produit"; ResultSet res = stmt.executequery( querystring ) ; while (res.next()) { String s = rs.getstring( "nom" ) ; float n = rs.getfloat("prix" ) ; System.out.println(s + " " + n); } Dans notre cas, voici l instruction : stmt = (Statement) c.createstatement(); ResultSet res = (ResultSet) stmt.executequery("select * FROM etudiant"); while (res.next()) { String nom = res.getstring("prenom"); System.out.println(prenom); String prenom = res.getstring("nom"); System.out.println(nom); String email = res.getstring("email"); System.out.println(email); String promo = res.getstring("promo"); System.out.println(promo); } 4
3.2 Lecture du contenu à partir d un fichier texte Ici, nous souhaitons lire un fichier de type texte en utilisant les méthodes suivantes : BufferdReader FileReader. Ces méthodes permettent de lire un ficher de type texte ligne par ligne et de reproduire ce qui est lu directement à l'écran. Voici l instruction que j ai exécutée : String ligne; BufferedReader lecteuravecbuffer ; lecteuravecbuffer = new BufferedReader(new FileReader(args[0])); while ((ligne = lecteuravecbuffer.readline())!= null) { System.out.println(ligne); String[] tab = ligne.split(";"); // cette instruction renvoie un tableau en affichant en ligne les informations du fichier 3.3 Création des nouveaux enregistrements Pour pouvoir créer des nouveaux enregistrements dans la table <etudiant> de la base de données <etudiants>, j ai exécutée la requête suivante : String insert = "INSERT INTO etudiant(nom,pre nom, email, promo) VALUES ('"; insert = insert + tab[0] + "','" + tab[1] + "','" + tab[2] + "','" + tab[3] + "');"; // concaténation des valeurs System.out.println(insert); stmt.executeupdate(insert); // affiche la ligne qu on veut insérer // exécution de la requête d ajout 4. Manuel d utilisation du programme LireEtudiant.java 4.1 Généralités Le développement du projet se fait sous NetBeans. Le programme implémenté est dans le dossier intitulé LireEtudiant ; pour le lancer il suffit d utiliser le fichier de test, LireEtudiant.java, se trouvant dans le dossier source. 5
4.2 Compilation Pour pouvoir compiler le programme, il faut se positionner sur le fichier LireEtudiant et faire clic droit : «clean and build» puis «run». 4.3 Exécution Pour exécuter ce programme, il faut tout d abord charger le fichier jar de mysql-connector-java en positionnant sur le dossier Libraries de notre programme puis clic droit et choisir Add JAR/Folder et ensuite charger le fichier jar. Voici un aperçu de la fenêtre qui s affichera : Il faut également charger et spécifier l emplacement du fichier texte. Pour cela, il faut se positionner sur le fichier LireEtudiant et faire clic droit et choisir properties. Mon fichier se nomme : M1siglis.txt et se trouve à l emplacement suivant: C:\Users\Kamy\Desktop. Voici un aperçu de la fenêtre : 6
Le fichier <M1siglis> suit le formalisme suivant: prenom;nom;email;promo; qui correspond à une ligne d enregistrement (un étudiant par ligne). Voici un aperçu du contenu du fichier : On observe les nouveaux enregistrements (les lignes qui se trouvaient dans le fichier texte) dans la base de données, en voici un aperçu : 7
5. Gestion des erreurs Lors de l inclusion du driver JDBC : try { } Class.forName(pilote); catch (java.lang.classnotfoundexception e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); return; } Lors de la lecture du fichier texte : try { lecteuravecbuffer = new BufferedReader(new FileReader(args[0])); } catch (FileNotFoundException e) { System.out.println("Erreur: impossible d'ouvrir ce fichier"); } 6. Conclusion M inspirant des notes de cours pour procéder à l implémentation de ce programme, je n ai pas rencontré de problèmes majeurs sauf lors de l exécution des requêtes que je suis parvenue à surmonter par la suite. 8