Chapitre 31. Interface JDBC

Table des matières
31.1. Configurer le pilote JDBC
31.1.1. Obtenir le pilote
31.1.2. Configurer le chemin des classes
31.1.3. Préparer le serveur de bases de données pour JDBC
31.2. Initialiser le pilote
31.2.1. Importer JDBC
31.2.2. Charger le pilote
31.2.3. Se connecter à la base de données
31.2.4. Fermer la connexion
31.3. Lancer une requête et traiter les résultats
31.3.1. Obtenir des résultats basés sur un curseur
31.3.2. Utiliser les interfaces Statement ou PreparedStatement
31.3.3. Utiliser l'interface ResultSet
31.4. Exécuter des mises à jour
31.5. Appeler des procédures stockées
31.5.1. Utiliser l'interface CallableStatement
31.5.2. Obtenir un ResultSet à partir d'une procédure stockée
31.6. Créer et modifier les objets de la base de données
31.7. Stocker des données binaires
31.8. Extensions PostgreSQL à l'API de JDBC
31.8.1. Accéder aux Extensions
31.8.2. Types de données géométriques
31.8.3. Gros objets
31.9. Utiliser le pilote dans un environnement multithread ou de servlet
31.10. Ensemble de connexions et source de données
31.10.1. Aperçu
31.10.2. Serveurs d'application : ConnectionPoolDataSource
31.10.3. Applications : DataSource
31.10.4. Sources de données et JNDI
31.11. Lectures supplémentaires

JDBC est une API au cœur de Java 1.1 et ultérieur. Elle fournit un ensemble standard d'interfaces vers les bases de données compatibles SQL.

PostgreSQL fournit un pilote JDBC de type 4. Le type 4 indique que le pilote est écrit en pur Java et communique dans le propre protocole réseau du système des bases de données. De ce fait, le pilote est indépendant de la plate-forme. Une fois compilé, le pilote peut être utilisé sur tout système.

Ce chapitre n'a pas pour but d'être un guide complet de programmation JDBC mais devrait vous aider à commencer. Pour plus d'informations, référez-vous à la documentation standard de l'API JDBC. De même, jetez un œil sur les exemples inclus dans les sources.

31.1. Configurer le pilote JDBC

Cette section décrit les étapes nécessaires avant de commencer à écrire ou exécuter des programmes utilisant l'interface JDBC.

31.1.1. Obtenir le pilote

Les versions pré compilées du pilote sont téléchargeables à partir du site web JDBC pour PostgreSQL.

Vous pouvez aussi construire le pilote à partir des sources mais vous n'avez réellement besoin de le faire que si vous modifiez le code source. Pour plus de détails, référez-vous aux instructions d'installation de PostgreSQL. Après installation, le pilote devrait se trouver dans PREFIX/share/java/postgresql.jar. Le pilote résultant sera construit pour la version de Java que vous utilisez. Si vous construisez avec un JDK, version 1.1, vous construirez une version qui supporte la spécification JDBC 1, si vous construisez avec un JDK 1.2 ou 1.3, vous construirez une version supportant la spécification JDBC 2, et enfin si vous construisez avec un JDK 1.4, vous construirez une version supportant la spécification JDBC 3.

31.1.2. Configurer le chemin des classes

Pour utiliser le pilote, l'archive JAR (nommée postgresql.jar si vous l'avez construite à partir des sources, sinon elle sera probablement nommée pg7.4jdbc1.jar, pg7.4jdbc2.jar ou pg7.4jdbc3.jar respectivement pour les versions JDBC 1, JDBC 2 et JDBC 3) a besoin d'être inclue dans le chemin des classes, soit en le plaçant dans la variable d'environnement CLASSPATH soit en utilisant des options sur la ligne de commande java.

Pour l'instant, supposons que nous avons une application qui utilise le pilote JDBC pour accéder à une base de données et que l'application est installée en tant que /usr/local/lib/myapp.jar. Le pilote JDBC de PostgreSQL est installé comme /usr/local/pgsql/share/java/postgresql.jar. Pour lancer l'application, nous pourrions utiliser :

export CLASSPATH=/usr/local/lib/myapp.jar:/usr/local/pgsql/share/java/postgresql.jar:.
java MyApp

Charger le pilote dans l'application est traité dans Section 31.2.

31.1.3. Préparer le serveur de bases de données pour JDBC

Comme Java utilise uniquement les connexions TCP/IP, le serveur PostgreSQL doit être configuré pour accepter les connexions TCP/IP. Ceci se fait en configurant tcpip_socket = true dans le fichier postgresql.conf ou en fournissant l'option -i au lancement de postmaster.

De plus, la méthode d'authentification du client dans le fichier pg_hba.conf pourrait avoir besoin d'être configurée. Référez-vous à Chapitre 19 pour plus de détails. Le pilote JDBC supporte les méthodes d'accès trust, ident, password, md5, et crypt.