0% ont trouvé ce document utile (0 vote)
72 vues4 pages

Accès Java aux SGBD via JDBC

jdbc

Transféré par

farahhadil33
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
72 vues4 pages

Accès Java aux SGBD via JDBC

jdbc

Transféré par

farahhadil33
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Principe

Accès aux bases de données avec


Java • Permet la Communication à la plupart des
SGBD (MS-ACCESS, MS SQL server, MySQL,
PostGreSQL, Oracle….)
• Utilise un pilote distribuable par le
propriétaire
• Le code java est indépendant de
l'implémentation de SGBD
Présenté par: Sami GHARBI

API Schéma
• Package: [Link]
• DriverManager: charge le pilote SGBD
Application Java pilote Protocol propriétaire
• Connection: représente une connexion
• PreparedStatement: exécute les requêtes
• ResultSet: représente le résultat d'une
requête Select Client Serveur
• Exceptions: erreurs lancées au cours de
l'interaction Architecture Deux Tiers
Algorithme PreparedStatement
1. Chargement de pilote • Créé à partir d'une connexion avec une requête
paramétrée
2. Ouverture d'une connexion • Les paramètres sont insérés grâce à une méthode
setXXX(int, String…):
3. Création d'un PreparedStatement • setInt(int position, int valeur)
4. Lancer une requête et récupérer le résultat • setString(int position, String valeur)
5. Traiter les données • Permet l'exécution de deux types de requêtes:
• Mise à jour(delete, insert, update):
6. Fermer la connexion void executeUpdate();
• Sélection(select):
ResultSet executeQuery();

ResultSet Mise à jour


• Un curseur contenant les résultats d'une • [Link](chemin_du_pilote);
requête select • Connection
• Méthodes: cnx=[Link](url,user,pass);
• String rq="requete_sql";
• boolean next()
• PreparedStatement st=[Link](rq);
• void beforeFirst() • [Link](1,100);
• String getString(int col) • [Link](2,"java");
• int getInt(int col) • [Link](rq);
• Date getDate(int col) • [Link]()
Sélection Exceptions
• [Link](chemin_du_pilote); • La plupart des interactions application-SGBD génèrent
• Connection des exceptions
cnx=[Link](url,user,pass); • Le bloc de traitement doit être délimité par un bloc try
• String rq="requete_sql"; suivi des blocs catch associé chacun à un type
• PreparedStatement st=[Link](rq); d'exception
• [Link](1,100); try{
• ResultSet rs=[Link](rq); Transaction application-SGBD
• while([Link](){ }
//Extraire champ par champ catch(TypeException1 e1){………………………………..}
} catch(TypeException2 e2){………………………………..}
[Link]() catch(TypeException3 e3){………………………………..}

Exceptions url
• Syntaxe de l'url dépend du SGBD
• MySQL:
Méthode Exception Explication
Impossible charger • jdbc:mysql://<@ip>[:port]/<bd>
forName ClassNotFoundException
la classe • Où:
getConnection
executeQuery SQLException Erreur SQL
– @ip: adresse IP du serveur
executeUpdate – port: port du serveur (MySQL 3306) optionnel
– bd: nom de la base de données
Application(1/3) Application(2/3)
• Soit une base de données: gestion • Insérer des valeurs dans la table
try{
• Le serveur est installé sur une machine ayant [Link]("[Link]");
Connection cnx=[Link](
l'adresse IP [Link] "jdbc:mysql://[Link]/gestion","root","");
String rq="insert into personne values(?,?,?)";
• Soit la table PreparedStatement st=[Link](rq);
[Link](1, 123);
Personne(CIN int(4) Primary Key, [Link](2, "ben med");
nom varchar(100), [Link](3, "Ali");
[Link](rq);
prenom varchar(100)) [Link](); }
catch(Exception ex){
[Link]("une erreur est survenue: "+[Link]());}
}

Application(3/3) Problème des dates


• Récupérer les information d'une certaine personne sachant
son CIN • Transformer une date java en une date sql (et
[Link]("[Link]");
Connection cnx=[Link]( vice-versa)
"jdbc:mysql://[Link]/gestion","root","");
String rq="select * from personne where CIN=?"; [Link] d1;
PreparedStatement st=[Link](rq);
[Link](1,CIN); ………
ResultSet rs=[Link]();
if([Link]()){ [Link] d2=new
[Link]("CIN="+[Link](1)+"\nnom="+[Link](2)+"\nprenom="+rs.g [Link]([Link]());
etString(3));}
else{
[Link]("aucune personne trouvée avec la CIN: "+CIN);}
[Link]();}
catch(Exception ex){
[Link]("une erreur est survenue: "+[Link]());}

Vous aimerez peut-être aussi