Quel que soit l’environnement, lorsque l’on souhaite accéder à des données stockées dans un SGBD-R, à partir d’un environnement de programmation, il est nécessaire de s’attacher à la démarche suivante :
Java DataBase Connectivity (JDBC) est un logiciel intermédiaire (middleware) qui, dans une architecture logicielle, s’insère entre un client et un serveur de données.
Son but est de fournir des services normalisés pour cet accès aux données, indépendamment du SGBD utilisé. Dialecte SQL, jeu de caractères, méthodes d’accès, autant de caractéristiques qui présentent couramment des différences notables lorsque l’on passe d’un produit à un autre, d’un éditeur à un autre. Le middleware d’accès aux données prend en charge ces différences et veut rendre transparente l’implémentation effective.
Grace à JDBC, on peut donc en principe, écrire un programme d’accès aux données qui n’aura besoin que d’adaptations mineures si on décide de changer de SGBD, en cours de route, durant le cycle de vie d’une application.
JDBC est un middleware spécifique au monde Java. Il a été nommé ainsi en référence à son homologue et prédécesseur dans le monde Microsoft : ODBC (Open DataBase Connectivity). ODBC a connu un grand succès. JDBC, dans son sillage, aussi.
Toutes les spécificités décrites ici nécessitent de référencer le package java.sql
import java.sql.*;
String url = "jdbc:mysql://turlututu.com/ma_base_de_données"; Connection connect = DriverManager.getConnection(url, user, passwd);
Statement stmt = connect.createStatement(); ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) { int x = rs.getInt("a"); String s = rs.getString("b"); float f = rs.getFloat("c"); }
Note : il existe une méthode getxxx pour chaque type standard Java.
connect.close();
Une grande partie du code montré ci-dessus est susceptible de déclencher la survenue d'Exceptions Java du type SQLException. En conséquence l'environnement de développement refusera d'exécuter ce code si la survenue des exceptions n'est pas gérée dans le code lui-même. Pour ce faire, et dans une version simple, encadrer le bloc d'accès aux données d'un try-catch :
try { //... flot d'instructions pouvant générer une exception ... } catch (SQLException e) { // action en cas de survenue d'une Exception System.out.println (e.getMessage()); }
Selon le SGBD cible, pour que JDBC puisse fonctionner correctement, il faudra intégrer au projet le pilote JDBC adapté. On procèdera en deux temps :
Par exemple, pour MySql actuellement, il faut télécharger le fichier mysql-connector-java-8.0.30.jar (il est inclus dans l’archive téléchargeable ici https://dev.mysql.com/downloads/file/?id=513221) mais il vous sera aussi fourni directement dans vos ressources pédagogiques.