0% ont trouvé ce document utile (0 vote)
101 vues22 pages

c9 Java Jdbc2

Transféré par

Saad Belaouad
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)
101 vues22 pages

c9 Java Jdbc2

Transféré par

Saad Belaouad
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

JDBC

Accès aux bases de données

Plan
Introduction
Utilisation du pont JDBC
Chargement du pilote de base de données
Établissement d'un connexion via le pont JDBC
Création d'un objet Statement
Utilisation d'un objet Statement
Établir une requête de sélection
Parcours d'un ResultSet
Telecharger le Driver :
https://www.oracle.com/database/technologies/jdbcdriver-ucp-
downloads.html

Ajouter le jar au projet java:


Propriété -> java Build Path -> Add External Jars
Introduction

JDBC (Java DataBase Connectivity) est une API développée par


SUN pour permettre à des applications Java d'accéder à des bases
de données relationnelles.
JDBC manipule les bases de données relationnelles en utilisant le
langage SQL.
Étapes :
Choisir et charger un pilote de base de données en mémoire
Ouvrir une connexion à une base de données
Récupérer les informations relatif à la connexion
Exécuter un ordre SQL à partir d'une connexion ouverte
Récupérer et traiter un ensemble d'enregistrements
Fermer la connexion
Chargement du pilote de base de
données

La première chose que doit faire votre code est de


charger le pilote en mémoire.
Pour ce faire, il faut utiliser la méthode statique
forName de la classe Class.
Cette méthode possède un argument de type String
contenant le nom complet de la classe du pilote
Chargement du pilote de base de
données
Syntaxe :

Class.forName("oracle.jdbc.driver.OracleDriver");

Cette méthode génère une exception


ClassNotFoundException
Établissement d’une connexion via le
pont JDBC
L'étape suivante est d’établir et d'ouvrir une
connexion à la base de données
La connexion peut échouer → gérer l'exception
SQLException
Établissement d’une connexion via le
pont JDBC

La méthode statique getConnection de la classe


DriverManager permet de créer un objet de
connexion, en fonction du pilote chargé.
Cette méthode prend au moins un paramètre de type
String représentant l'URL de la base de données.
Un autre prototype de la méthode getConnection
permet de se connecter à une base de données en
fournissant un login et un password si nécessaire.

DriverManager.getConnection("URL",login,password)
Établissement d’une connexion via le
pont JDBC
Connection conn = null;
try {
Class.forName(" oracle.jdbc.driver.OracleDriver ");
conn=DriverManager.getConnection("
jdbc:Oracle:thin:@localhost:1521:orcl ");
// . . .
conn.close();
} catch(ClassNotFoundException e) {
System.out.println("Driver non chargé !");
} catch(SQLException e) {
System.out.println("Erreur dans la requête SQL");
}
Création d'un objet Statement

La 3ième étape est de créer un objet "Statement"


permettant de fournir un espace de travail pour :
Créer
Exécuter
Récupérer les résultats envoyés par une requête SQL
Les objets "Statement" sont créés en appelant la
méthode "createStatement"d'une connexion valide
Statement st=con.createStatement();
Utilisation d'un objet Statement

L'interface Statement définit un bon nombre de


méthodes. Parmi elles, se trouvent des méthodes
permettant l'exécution d'un ordre SQL sur la base de
données.
La méthode executeQuery permet de récupérer les
enregistrements sélectionnés (par l'ordre Select) dans
un objet de type ResultSet.
La méthode executeUpdate ne fait que mettre à jour
la base de données (ordres Insert, Update et Delete) et
ne retourne, donc, aucun résultat.
Utilisation d'un objet Statement

try {
String strClassName = " oracle.jdbc.driver.OracleDriver ";
String strUrl = " jdbc:Oracle:thin:@localhost:1521:orcl”;
String strReq = "INSERT INTO Employes VALUES (13, 'Titi’, “1/5/60”);";
Class.forName(strClassName);
Connection con = DriverManager.getConnection(strUrl);
Statement st = con.createStatement();
st.executeUpdate(strReq);
con.close();
} catch(ClassNotFoundException e) {
// . . .
} catch(SQLException e) {
// . . .
}
Établir une requête de sélection

Nous cherchons maintenant à récupérer l'ensemble


des enregistrements de la table Employés.
Il nous faut donc exécuter l'ordre SQL "SELECT *
FROM Employés;".
L'appel à "executeQuery" renvoie un objet de type
ResultSet chargé avec les valeurs considérées
Établir une requête de sélection

try {
String strClassName = " oracle.jdbc.driver.OracleDriver ";
String strUrl = " jdbc:Oracle:thin:@localhost:1521:orcl ";
String strReq = "SELECT * FROM Employes";

Class.forName(strClassName);
Connection con = DriverManager.getConnection(strUrl);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(strReq);
// . . . Utilisation du ResultSet . . .
con.close();
} catch(ClassNotFoundException e) {
// . . .
} catch(SQLException e) {
// . . .
}
Parcours d'un ResultSet

String Req = "SELECT * FROM Employes;";


ResultSet rs = st.executeQuery(Req);
while(rs.next()){
System.out.println(rs.getInt(1)+” “+ rs.getString(2)+”
“+rs.getString("Daten"));
}
rs.close();
Quelques méthodes de récupération de
données

boolean getBoolean(int); float getFloat(String);


boolean getBoolean(String); int getInt(int);
byte getByte(int); int getInt(String);
byte getByte(String); long getLong(int);
Date getDate(int); long getLong(String);
Date getDate(String); short getShort(int);
double getDouble(int); short getShort(String);
double getDouble(String); String getString(int);
float getFloat(int); String getString(String);
Afficher des informations d’une table
public class Etudiant {
public static void main(String[] args) {
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con;
con=DriverManager.getConnection("jdbc:Oracle:thin:@localhost:1521:orcl","system","sys"
);
Statement st=con.createStatement();
String requete=“Select * From Etudiants";
ResultSet res=st.executeQuery(requete);
while(res.next())
System.out.println(res.getString(1)+" "+res.getInt(2)+" "+res.getString(3));
con.close();
}
catch (Exception e){
System.out.println(e.getMessage()); }
}}
Insérer une nouvelle ligne
public class Etudiant {
public static void main(String[] args) {
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con;
con=DriverManager.getConnection("jdbc:Oracle:thin:@localhost:1521:orcl",“system","sys"
);
Statement st=con.createStatement();
String requete="Insert into Etudiants Values('Ahmed',22,'Benjlloun')";
st.executeUpdate(requete);
con.close();
}
catch (Exception e){
System.out.println(e.getMessage()); }
}}
Exercice

On souhaite créer une simple application pour la


gestion des clients. Pour ce faire, on propose la classe
Client caractérisée par : id, nom et le prénom.
Développement de la couche métier :
Créer la classe Client dans le package "ma.projet.beans".
Développement de la couche de données
Créer la table client dans une base de données (Oracle
ou Mysql).
Exercice

Développement de la couche accès aux données


Créer la classe Connexion dans le package "ma.projet.connexion« , dans
cette classe créer une méthode statique Connection getCn() retournant un
objet de type Connection selon la base de données que vous allez utilisé.
Pour Mysql:
url = "jdbc:mysql://localhost/dbclient"; login= « root"; et password = "";
Créer une interfaces IDao dans le package "ma.projet.dao", cette interface
contient les méthodes :
boolean create ( T o) : Méthode permettant d'ajouter un objet o de type T.
boolean delete (T o) : Méthode permettant de supprimer un objet o de type
T.
boolean update (T o) : Méthode permettant de modifier un objet o de type T.
T findById (int id) : Méthode permettant de renvoyer un objet dont id est
passé en paramètre.
List <T> findAll ( ) : Méthode permettant de renvoyer la liste des objets de
type T.
Exercice

Créer la classe ClientService qui implémente l'interface IDao dans le


package "ma.projet.service" et redéfinir toutes les méthodes de
l'interfaces.
La méthode create ( Client c) : permet d’insérer le client c dans la table client
La méthode delete(Client c): permet de supprémer le client c de la table
client
La méthode update (Client c): permet de modifier le client c dans la table
client
La méthode findById (int id) : permet de renvoyer le client dont l’id est id
La méthode findAll ( ) : permet de renvoyer la liste de tous clients.
Exercice

Développement de la couche présentation


Dans une classe de test :
Créer 5 clients.
Afficher le client dont id = 3.
Supprimer le client dont id = 3.
Modifier le client dont id = 2.
Afficher la liste des clients.

Vous aimerez peut-être aussi