FC-Vélizy
Connexion à une base PostgreSQL avec JDBC4
Groupe « Administrateur de BD JAVA »
SUJET
La dernière version du logiciel JDBC (Java Database Connectivity) est la version 4. La version
définitive a été standardisée à la fin de l'année 2006. Elle a été développée par une communauté
regroupée au sein du JSR 221 (Java Specification Requests).
Ce travail a été dirigé par SUN MICROSYSTEM. Le groupe d'experts associé était composé de
représentants d'entreprises prestigieuses comme BEA Systems, IBM, MYSQL Inc., LLC Nokia
Corporation, Oracle, PointBase, SAP AG, Sybase, etc.
Les spécifications officielles de la dernière version de l'intergiciel JDBC version 4 précisent que
dorénavant le chargement du driver par la commande Class.forName(« nom du driver ») n'est plus
nécessaire. En voici un extrait.
The JDBC 4.0 API introduces new material and changes in the following areas:
■Automatic loading of java.sql.Driver
DriverManager.getConnection has been modified to utilize the Java SE Service Provider
mechanism to automatically load JDBC Drivers. This removes the need to invoke Class.forName.
Ce texte est disponible en téléchargement au format PDF sous l'intitulé Final Release datée de
décembre 2006 à partir du site http://jcp.org. Plus loin dans le document, au chapitre 9, le
paragraphe 9.2.1 (Loading a driver that implements java.sql.Driver) précise les conditions que doit
remplir un driver JDBC v4 afin d'obtenir une connexion sans avoir à charger le driver. Voici le
paragraphe.
The DriverManager.getConnection method has been enhanced to support the
Java Standard Edition Service Provider mechanism. JDBC 4.0 Drivers must include the
file META-INF/services/java.sql.Driver. This file contains the name of the
JDBC driver’s implementation of java.sql.Driver.
Vous faites votre stage dans la société Open&Free Software. Un de vos collègue rencontre le
problème suivant. Après avoir téléchargé le driver JDBC41 pour la base de données PostgreSQL et
appliqué la règle ci-dessus il n'arrive pas à obtenir une connexion sur la base de données. Voici son
code :
String URL = "jdbc:postgresql://localhost/jdbc4";
String LOGIN = "postgres";
String PWD = "secret";
try {
Connection connexion = DriverManager.getConnection(URL, LOGIN, PWD);
} catch (SQLException e) { e.printStackTrace(); }
1 version postgresql-8,2-506.jdbc4.jar
JJLC 1/2 FC VELIZY