JAVA 13 Connexion BD v2
JAVA 13 Connexion BD v2
JAVA 13 Connexion BD v2
On considère aujourd’hui qu’environ 80% des produits logiciels développés ont besoin
d’accéder à une base de données. Dès la conception du langage Java, l’accès aux bases de
données a donc été une priorité des concepteurs. L’API JDBC (Java Database Connectivity)
a été la première API développée après le JDK, et séparément de lui. Elle fut introduite dans
l'API standard dès le JDK 1.1. L’idée originale était de donner la possibilité à un
programme Java d’accéder à toute base de données ANSI SQL-2. Au début des années 90,
Microsoft avait écrit ODBC (Object Database Connectivity). La puissance commerciale de
cet éditeur avait imposé ce produit à toute l’industrie. ODBC est un jeu d’interfaces en C et
C++ permettant d’interroger une base de données d’un programme C ou C++. Tous les
fabricants de base de données ont donc développé des pilotes ODBC pour leur serveur. Le
pilote étant le composant logiciel reconnu par un code ODBC, et capable de dialoguer avec
une base de données spécifique. Les développeurs de Java ont donc eu la première idée de
développer JDBC au-dessus d’ODBC. Les premières versions de JDBC s’adressaient donc à
ODBC, ce qui a permis immédiatement à Java de pouvoir dialoguer avec à peu près tous les
serveurs de bases de données existants. Même si les performances n’étaient pas bonnes, le
pont JDBC-ODBC est un pilote qui s’adresse à un autre pilote, cette possibilité a
certainement contribué au succès rapide de Java. Aujourd’hui l’API JDBC est mature, et la
plupart des serveurs de bases de données ont leur pilote JDBC natif. On distingue plusieurs
types de pilotes JDBC, même si cette distinction est de moins en moins d’actualité, tant Java
est devenu incontournable pour les vendeurs de base de données.
Voici la liste des différentes versions de JDBC, ainsi que le JDK correspondant.
3. U N EXEMPLE SIMPLE
Le pilote d’une base de données est tout simplement une classe Java instance de
l’interface java.sql.Driver. Il est possible de charger une classe Java explicitement dans le
code, par appel de la méthode Class.forName(). Chaque éditeur de base de données fournit
une telle classe, généralement dans un JAR qui constitue le pilote complet. Le nom complet
de cette classe varie donc d'un éditeur à l'autre. Pour chaque base, il faut donc trouver ce
nom. Dans le cas de MySQL, il s'agit de com.mysql.jdbc.Driver. L'ouverture d'une
connexion sur une base MySQL aura donc la forme suivant :
L’objet chaîneDeConnexion est de la classe String. C’est une concaténation des éléments
suivants :
Pour pouvoir passer une requête à la base, il faut un objet de type Statement. Cet objet
s’obtient en faisant appel à la méthode createStatement() de notre objet de type Connection.
On récupère le résultat dans un objet de type ResultSet. Dans le cas d’une mise à jour de la
base, ce qui correspond aux commandes SQL insert, update, create, drop, delete, on utilise
la commande :
L’entier de retour représente le nombre de lignes affectées dans le cas d’un insert,
d’un update ou d’un delete. Dans le cas d’une requête de sélection, un objet de
type ResultSet est renvoyé.
L’objet resultSet contient les lignes renvoyées par la requête. Enfin, pour parcourir ces
lignes, il faut utiliser les méthodes de l’interface ResultSet. Voici un exemple.
while (rs.next()) {
Les champs des lignes sélectionnées sont maintenant disponibles sous forme d’objets Java,
ce qui était bien notre objectif. Nous reverrons toutes ces méthodes et cette procédure en
détails dans les paragraphes suivants.
Voici un exemple complet du code que nous venons de présenter très rapidement.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import com.mysql.cj.jdbc.Driver;
public class TestDB {
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import org.postgresql.Driver;
Eclipse permet d'ajouter très facilement un tel fichier JAR à un projet, en suivant la
procédure ci-dessous :