Vous êtes sur la page 1sur 15

ESPRITEcoleSuprieureprivedingnierieetdetechnologies

TP1(JDBCDAO)
JDBC

La technologie JDBC (Java DataBase Connectivity) est une API fournie avec Java (depuis sa version 1.1) permettant de se connecter des bases de donnes, c'est-dire que JDBC constitue un ensemble de classes permettant de dvelopper des applications capables de se connecter des serveurs de bases de donnes (SGBD). L'API JDBC a t dveloppe de telle faon permettre un programme de se connecter n'importe quelle base de donnes en utilisant la mme syntaxe, c'est--dire que l'API JDBC est indpendante du SGBD. De plus, JDBC bnficie des avantages de Java, dont la portabilit du code, ce qui lui vaut en plus d'tre indpendant de la base de donnes d'tre indpendant de la plate-forme sur laquelle elle s'excute.
ExempleSuivie: VoiciunMCDreprsentantlarelationentrelestudiantsetlesoptions(Informatique,Tlcom.):

Onveutcrerunepetiteapplicationjavaquipermetdegrerceci(ajout,suppression,modification destudiantsetdesoptionssansoublierlaffectationdesoptionsauxtudiants)dansunebasede donnesMySQL,pourcefaire,ondoitcommencerparcrerlabaseetsonschma. 1) Crationdelabase:


EnutilisantMySQLAdministrator: Cataloguecreatenewschema insertiondunomdelabaseexemple (esprit).

2) Utilisateursetdroits:
1

TP1JDBC/DAO(ArchitecturesntiersJEE)

ESPRITEcoleSuprieureprivedingnierieetdetechnologies
Useradministrationaddnew user Nomutilisateur:esprituser Motdepass:espritpwd EnsuiteenbasadroiteApply changes Puisclicdroitsurlutilisateur esprituseraddhostsfromwich theusercanconnect Nomduhost:localhost.

Slectionnerlocalhost (sousesprituser)puis longletSchema privilge. Choisirlabasededonnee espritpuisassignertous lesdroits. EnfinApplychanges

Voilaonaterminlaprparationdelabasededonne,onvamaintenantcrernostables. 3) Crationdestables: Nousallonsutiliserunautreoutilmieuxadaptcettetache:MySQLQueryBrowser. Onenprofiterapour testernosnouveaux paramtresdeconnexion

TP1JDBC/DAO(ArchitecturesntiersJEE)

ESPRITEcoleSuprieureprivedingnierieetdetechnologies Unefoisconnectvousverrez droitedelcranlesdiffrentes basesdedonnes,faiteunclic droitsurlabasededonnes espritpuisCreateNew Table.

Paramtrezlescolonnescommesuit:

PuisApplyChangespuisexecute.
3

TP1JDBC/DAO(ArchitecturesntiersJEE)

ESPRITEcoleSuprieureprivedingnierieetdetechnologies Pourlatableetudiant: Ilfautaussiajouterunecolonneno_option

ChoisissezlongletForeignKeys, puis+. Pourlenom:FK_opton PourrefTable:option Column:no_option RfrenceColumn:no_option Enfin:ApplyChanges,et execute.

TP1JDBC/DAO(ArchitecturesntiersJEE)

ESPRITEcoleSuprieureprivedingnierieetdetechnologies Maintenantnousallonscrersousclipseunnouveauprojetjavaquivatraiternosobjetsmtierset stockerleursdonnesrelativesdansnotrebasededonnes. 1) Crationdunouveauprojet: Lancereclipse. File>New>Project Java>JavaProject

PuisNext,lassistantvousdemanderalenomduprojet:ProjetJdbc CliquersurFinish. VousverrezalorslenouveauprojetauniveauduPackageexplorer(gauche). CliquedroitsurlerepertoirSRCduprojet,puisNew>package. Nomdupackage:org.esprit.jdbc


5

TP1JDBC/DAO(ArchitecturesntiersJEE)

ESPRITEcoleSuprieureprivedingnierieetdetechnologies 2) Miseenplacedunelibrairieutilisateur:ledriverJDBCpourMySql: Window>Preferences,unefentresaffiche: Java>BuildPath>User Librariespuisappuiezsur New. Nom:MysqlpuisOK. Lanouvellelibrairie saffiche. ChoisissezAddJars

Parcourirjusqu' trouverlefichier: mysqlconnector java5.0.4bin.jar. PuisLoad. EnfinOK.

TP1JDBC/DAO(ArchitecturesntiersJEE)

ESPRITEcoleSuprieureprivedingnierieetdetechnologies 3) RelierleProjetlalibrairie: Choisirlaracineduprojet>properties>JavaBuildPath LongletLibrariespuisAddLibrary.

ChoisissezUserLibrarypuis,Nextunelistedeslibrairiessaffiche:

CocherlalibreriepuisFinish
7

TP1JDBC/DAO(ArchitecturesntiersJEE)

ESPRITEcoleSuprieureprivedingnierieetdetechnologies 4) LesClassesmtiers:

SousEclipsechoisissezlepackageorg.esprit.jdbc>clicdroit>new>Class. Nom:Option.PuisFinish. Code:

package org.esprit.jdbc; public class Option { private int no; private String nom; public int getNo() { return no; } public void setNo(int no) { this.no = no; } public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } }

8

TP1JDBC/DAO(ArchitecturesntiersJEE)

ESPRITEcoleSuprieureprivedingnierieetdetechnologies LaclasseEtudiant:

package org.esprit.jdbc; public class Etudiant { private private private private int no; String nom; String prenom; Option option;

public int getNo() { return no; } public void setNo(int no) { this.no = no; } public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } public String getPrenom() { return prenom; } public void setPrenom(String prenom) { this.prenom = prenom; } public Option getOption() { return option; } public void setOption(Option option) { this.option = option; } }

9

TP1JDBC/DAO(ArchitecturesntiersJEE)

ESPRITEcoleSuprieureprivedingnierieetdetechnologies 5) Lecodedelaclasseprincipale:Test.java

package org.esprit.jdbc; import import import import import java.sql.Connection; java.sql.DriverManager; java.sql.ResultSet; java.sql.SQLException; java.sql.Statement;

public class Test { static Connection connection=null; static Statement st=null;

public static void enregistrerEtudiant(Etudiant etd) { String nom=etd.getNom(); String prenom=etd.getPrenom(); Option opt=etd.getOption(); int noOption=opt.getNo(); String sql="INSERT INTO esprit.etudiant(nom_etudiant,prenom_etudiant,no_option)" + "VALUES('"+nom+"','"+prenom+"',"+noOption+")"; try { st=connection.createStatement(); st.executeUpdate(sql); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } public static void enregistrerOption(Option opt){ String nom=opt.getNom(); String sql="INSERT INTO esprit.option(nom_option)VALUES('"+nom+"')"; try { st=connection.createStatement(); st.executeUpdate(sql); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } }

10

TP1JDBC/DAO(ArchitecturesntiersJEE)

ESPRITEcoleSuprieureprivedingnierieetdetechnologies

public static void supprimerOption(Option opt){ String sql="DELETE FROM esprit.option WHERE nom_option='"+opt.getNom()+"'"; try { st=connection.createStatement(); st.executeUpdate(sql); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } public static Option lireOption(int no){ Option opt=new Option(); String sql="SELECT * FROM esprit.option WHERE no_option='"+no+"'"; try { ResultSet rs; st=connection.createStatement(); rs=st.executeQuery(sql); while (rs.next()){ opt.setNo(rs.getInt("no_option")); opt.setNom(rs.getString("nom_option")); } } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } return opt; } public static void main(String[] args) { System.out.println("Bonjour"); try { Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }
11

TP1JDBC/DAO(ArchitecturesntiersJEE)

ESPRITEcoleSuprieureprivedingnierieetdetechnologies

String url="jdbc:mysql://localhost/4a1"; String login="esprituser"; String mdp="espritpwd"; try { connection=DriverManager.getConnection(url,login,mdp); System.out.println("Connection russie..."); } catch (SQLException e) { System.out.println("Connexion echoe...."); e.printStackTrace(); } Option option=new Option(); option.setNom("Informatique"); Etudiant etudiant; etudiant=new Etudiant(); etudiant.setNom("foulen"); etudiant.setPrenom("benfoulen"); etudiant.setOption(option); enregistrerOption(option); enregistrerEtudiant(etudiant); //supprimerOption(option); //Option opt1=lireOption(1) ; } }
6) LedesignpatternDAO: LepatrondeconceptionDAOproposelacrationd'uneclasseDAOparclassemtier. ChaqueclasseDAOcontientlesmthodesdeliaisonaveclabasededonnes,parfois appelesCRUD(pourCreate,Request,Update,Delete). Lesmthodesdesuppressionetdemodificationrenvoientunboolenindiquantlesuccsde l'opration,lamthoded'insertionrenvoiel'identifiantaffectlanouvellelignedelatable (utileencasd'identifiantautoincrmentparleSGBD),etplusieurs mthodesgetpermettentd'obtenirunobjetenfonctiondediffrentscritresde recherche. 7) Notrenouvelleorganisation: Encapsulertouslecoderelatifauxdtailstechniquesdelaconnexiondansuneclasse ConnexionMySQL:
12

TP1JDBC/DAO(ArchitecturesntiersJEE)

ESPRITEcoleSuprieureprivedingnierieetdetechnologies import import import import import java.sql.Connection; java.sql.DriverManager; java.sql.ResultSet; java.sql.SQLException; java.sql.Statement;

public class ConnexionMySql { private private private private Connection connection; Statement st; ResultSet rs; String sql;

public boolean seConnecter(){ String url="jdbc:mysql://localhost/esprit"; String login="esprituser"; String mdp="espritpwd"; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch (InstantiationException e) { e.printStackTrace(); return false; } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } try { connection=DriverManager.getConnection(url,login,mdp); } catch (SQLException e1) { e1.printStackTrace(); return false; } return true; } public boolean executerUpdate(String sql){ try { st=connection.createStatement(); st.executeUpdate(sql); } catch (SQLException e) { e.printStackTrace(); return false; }
13

TP1JDBC/DAO(ArchitecturesntiersJEE)

ESPRITEcoleSuprieureprivedingnierieetdetechnologies return true; } public boolean executerRequete(String sql){ try { st=connection.createStatement(); setRs(st.executeQuery(sql)); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } return true; } public void setRs(ResultSet rs) { this.rs = rs; } public ResultSet getRs() { return rs; }} EnplusdesclassesEtudiantetoptionnousaurontdesclassesEtudiantDAOetOptionDao

NotrenouveauProjet:
14

TP1JDBC/DAO(ArchitecturesntiersJEE)

ESPRITEcoleSuprieureprivedingnierieetdetechnologies Organisation:

15

TP1JDBC/DAO(ArchitecturesntiersJEE)