Cours 3

publicité
Cours 3
Contenu du cours :
"
"
"
Accès à une base de données
Exécution de requêtes et lectures de résultats
Les méta-données
JDBC
L'API JDBC est utilisée pour
intéragir avec une base de données.
2
Privilèges
JDBC
4
Accès à une base de données en java.
Pour accéder à une base de données en java, nous devons réaliser
les étapes suivantes :
•
•
Charger un pilote spécifique à la base de données.
Obtenir une connexion avec la base de données (session).
•
Obtenir un « Statement » qui permettra d'exécuter les requêtes SQL.
Obtenir des « ResultSet » contenant les données de la table.
•
Fermer la connexion à la base de données.
•
L'accès à une base de données
se fait toujours selon le même schéma.
JDBC
import java.sql.*;
5
public class AfficherEmployes {
// JDBC driver name
static final String
static final String
static final String
static final String
and database URL
JDBC_DRIVER = "com.mysql.jdbc.Driver";
DATABASE_URL = "jdbc:mysql://localhost/ressources_humaines";
USER = “user";
PASS = “user";
try {
// Charger le pilote
Class.forName( JDBC_DRIVER );
// etablir la connection
connection = DriverManager.getConnection( DATABASE_URL, USER, PASS);
} // end try
catch ( ClassNotFoundException classNotFound ) {
System.err.prinln(“Impossible de charger le pilote”);
classNotFound.printStackTrace();
System.exit( 1 );
} // end catch
catch ( SQLException sqlException ){
System.err.prinln(“Connetion Impossible”);
sqlException.printStackTrace();
System.exit( 1 );
} // end catch
…
Charger un pilote spécifique à
la base de données
et obtenir une connexion à la base de données.
JDBC
Charger un pilote spécifique à la base de données
et obtenir une connexion à la base de données.
Pour charger un pilote spécifique à la base de données,
on utilise la méthode statique de la classe java.lang.Class :
Class.forName( <NomDeLaClasseDuPilote> );
Ex: Class.forName(“com.mysql.jdbc.Driver”);
Cette méthode peut lancer l'exception ClassNotFoundException si la classe
spécifiée n'est pas dans votre classpath.
Pour obtenir une connexion avec la base de données ,
on utlise la méthode statique de la classe java.sql.DriverManager :
DriverManager.getConnection( url, user, pwd )
DriverManager.getConnection( url)
Cette méthode prend en argument l'url de la base de données
Elle peut lancer l'exception SQLException en cas de problème.
Cette procédure permet de se connecter à
une base de donnée distante ou locale .
6
Classpath
•
Deux manières pour spécifier où se trouve le driver
1. Au lancement du programme
java -classpath c:\drives\mysql-connector-java-5.1.7-bin.jar;. AfficherEmployes
2. Copier le driver dans le répertoire jre\lib\ext de votre jdk
(C:\Program Files\Java\jdk1.5.0_15\jre\lib\ext) et lancer
normalement le programme
java AfficherEmployes
JDBC
8
Obtenir un « Statement »
static final String REQUETE_SQL = "SELECT * FROM employes“;
Il nous faut obtenir un Objet de type Statement pour envoyer nos
requêtes SQL. Ces requêtes peuvent alors
nous rertourner un ResultSet.
JDBC
9
Obtenir un « Statement »
Pour obtenir un statement , il faut utiliser la méthode
connection.createStatement();
Cette méthode renvoie un objet java implémentant l'interface
java.sql.Statement
Cet objet peut alors être utilisé pour exécuter des requêtes SQL :
statement.executeQuery( <RequeteSQL sous forme de String> );
statement.executeUpdate( <RequeteSQL sous forme de String> );
Certaines requêtes renvoient un jeu de données : un java.sql.ResultSet.
Ce ResultSet sera utilisé pour lire les données...
Il nous faut obtenir un Objet de type Statement pour envoyer nos
requêtes SQL. Ces requêtes peuvent
alors rertourner un ResultSet.
JDBC
10
Manipulation des ResultSets
Il faut toujours
placer le
curseur sur le
premier
enregistrement
avant d’utiliser
un ResultSet
Ensuite on peut
parcourir notre
ensemble de
données
!!! Au début le curseur du ResultSet pointe sur l'enregistrement -1
!!!!
JDBC
11
Manipulation des ResultSets
Ces opérations
sont à risque
On utilise la
méthode
appropriée de
ResultSet pour
lire la donnée de
la colonne « i »
Il existe de nombreuses méthodes permettant de lire tous les
types de données primitifs dans la classe ResultSet.
JDBC
12
Les Meta Données
Les meta données sont des données sur les données.
Chaque ResultSet possède ses propres MetaDonnées.
Elles sont utilisées pour obtenir les noms des colonnes dans un ResultSet
ainsi que le type des données qui se trouvent dans chacune d'elles.
Obtention des
metaData.
Utilisation des
metaData.
Les méta données sont stockées dans un ResultSetMetaData.
JDBC
13
Les Meta Données
les metadonnées
renseignent sur le
type des données
dans chaque
colonne.
On peut
également obtenir
le type des
données sous
forme de chaîne.
On utilise les métadonnées pour connaître le type des données
dans chaque colonne du ResultSet.
Exécution
Téléchargement