JDBC
JDBC
2
Présentation
Architecture
Drivers
Mise en œuvre
Présentation 1/2
3
Java DataBase Connectivity
API Java adaptée à la connexion avec les bases de données
relationnelles (SGBDR)
Présentation 2/2
4
Objectifs de JDBC
Fournir un accès homogène aux SGBDR
Abstraction des SGBDR cibles
Requêtes SQL
Simplicité de mise en oeuvre
Drivers 1/4
5
TYPE 1 :
Appli Java
Pilotes accédant à une base Driver JDBC (en java)
de données par Driver ODBC (non java)
l’intermédiaire d’une autre
technologie. Le pilote
convertit les appels de
données Java en appel Protocole SGBD
ODBC valide, et les exécute
ensuite à l’aide du pilote
ODBC.
Base de
Données
Drivers 2/4
6
TYPE 2 :
Appli Java
Pilotes d’API natifs. Il s’agit Partie en java
d’un mélange de pilotes natifs Driver
Partie native
et de pilotes Java. Les appels
JDBC sont convertis en appels
natifs pour le serveur de bases
de données (Oracle, Sybase, Protocole SGBD
…) généralement en C ou en
C++.
Base de
Données
Drivers 3/4
7
TYPE 3 : Appli/Applet
Java
Pilote convertissant les appels
JDBC en un protocole TCP/RMI/Corba
indépendant du SGBD. Un
serveur d'applications convertit Driver en java
ensuite ceux-ci dans le Serveur
protocole SGBD requis d'Applications
(architecture 3-tiers).
Protocole SGBD
Base de
Données
Drivers 4/4
8
TYPE 4 : Appli/Applet
Java
Pilote « 100% Java ». Pilotes Driver Java
convertissant les appels JDBC
directement en un protocole
réseau exploité par le SGBD.
Ces pilotes encapsulent Protocole réseau
directement l’interface cliente du SGBD
du SGBD et sont fournis par
les éditeurs de base de
données.
Base de
Données
Expliquer le rôle de
JDBC («Java Database Connectivity»)
Application Java
JDBC
ODBC
Oracle MySQL SQLServer Access
Expliquer le rôle de
JDBC («Java Database Connectivity»)
JDBC définit de façon abstraite comment accéder aux
données externes
Les méthodes utilisées pour accéder à une source de données et
pour manipuler cette source sont définies indépendamment du
fournisseur de base de données
On utilise le langage SQL pour effectuer les requêtes dans
la base de données
On utilise des instructions Java pour
Se connecter à la base de données
Exécuter une requête SQL sur cette base de données
Manipuler les données obtenues, les données à transmettre
Utiliser JDBC pour accéder à une
source de données
Java
JDBC
BD
Utiliser JDBC pour accéder à une
source de données
JDBC utilise un pilote afin de travailler avec une base de donnée spécifique
Le pilote fait le pont entre l'interface indépendante de JDBC et les spécificités
de la base de données utilisée
Certains fournisseurs de bases de données offrent des pilotes JDBC
spécifiques
Par exemple, Oracle fournit ses pilotes JDBC :
oracle.jdbc.OracleDriver
oracle.jdbc.pool.OracleConnectionPoolDataSource
D'autres fournisseurs ne fournissent que des pilotes ODBC
Il faut alors que cette source soit définie comme une source de données ODBC
sur l'ordinateur offrant le service de données
On utilisera alors le pont JDBC-ODBC pour accéder à ces sources de données :
sun.jdbc.odbc.JdbcOdbcDriver
La Technologie ODBC
13
ODBC signifie Open Database Connectivity. Il s'agit d'un format
propriétaire défini par Microsoft permettant la communication entre
des clients pour bases de données fonctionnant sous Windows et les
SGBD du marché.
Etant donné qu'il existe différents types de bases de données, et que
chacune d'entre-elles possède sa propre façon de traiter les requêtes
SQL et de renvoyer les résultats, ODBC permet d'obtenir des résultats
identiques quelque soit le type de base de données, sans avoir à
modifier le programme d'appel qui transmet la requête.
ODBC n'est toutefois pas la solution miracle, étant donné d'une part
qu'il ne s'agit pas d'une technologie libre (Microsoft la fait évoluer à
son gré), d'autre part qu'il ne s'agit que d'une interface "alternative" à
celle fournie par les constructeurs et compliquée à maîtriser.
Architecture
14
Mise en œuvre 1/6
15
Importer le package java.sql
Enregistrer le driver JDBC
Etablir la connexion à la base de données
Créer une zone de description de requête
Exécuter la requête
Traiter les données retournées
Fermer les différents espaces
Mise en œuvre 2/6
16
Enregistrer le driver JDBC
Méthode forName() de la classe Class :
Class.forName("com.mysql.jdbc.Driver");
Connexion à la base
Méthode getConnection() de DriverManager :
Connection connexion =
DriverManager.getConnection(url,user,password);
Mise en œuvre 3/6
17
Création d’un Statement
L’objet Statement possède les méthodes nécessaires pour
réaliser les requêtes sur la base associée à la connexion dont il
dépend.
Statement statement = connexion.createStatement();
Mise en œuvre 4/6
18
Exécution d’une requête
executeQuery() : pour les requêtes (SELECT) qui retournent un
ResultSet (ensemble des enregistrements traités).
executeUpdate() : pour les requêtes (INSERT, UPDATE, DELETE,
CREATE TABLE, DROP TABLE) qui retournent un entier (nombre
des enregistrements traités)
ResultSet resultset = statement.executeQuery ("SELECT
numero,nom, prenom FROM telephone")
Mise en œuvre 5/6
19
Traiter les données retournées
on peut parcourir le ResultSet d’avant en arrière :
next(),previous()
en déplacement absolu, relatif, aller à la n-ième ligne :
absolute(int row), relative(int row), first(), last(), ...
Les colonnes sont référencées par leur numéro (commencent à
1) ou par leur nom.
while(resultset.next())
{
int numero = resultset.getInt(1);
String nom = resultset.getString("nom");
}
Mise en œuvre 6/6
20
Fermer les différents espaces ouverts pour terminer
proprement un traitement.
Chaque objet possède une methode close():
resulset.close();
statement.close();
connection.close();
Conclusion
21
Utilisation d’une API unique (JDBC) pour tous les SGBD.
Par l’intermédiaire des drivers, les moyens d’accès aux bases
de données deviennent transparents.
Simplicité de mise en œuvre, indépendant de la SGBD cible
Nécessité de connaître SQL.
Actuellement API JDBC 2.0 (inclus dans Java 2)
Tous les drivers sur :
http://industry.java.sun.com/products/jdbc/drivers
JDBC
22
FIN