JDBC: interfaces Java/BD relationnelles

  • Principe de base
    • Exemple de code: connexion via url
    • Exemple de code: connexion via datasource
    • Exemple de code: statement/execute query
    • Exemple de code: statement/execute update
  • Prepared Statements
    • Exemple de code: query
    • Exemple de code: mise à jour

JDBC est l'API Java standard pour se connecter à un SGBD relationnel. Il s'agit d'un ensemble d'interface implémentées par des classes spécifiques à chaque SGBD (i.e. il y a une implémentation MySQL, Oracle, PostgreSQL, derby, HyperSQL, etc.). On peut trouver la documentation des interfaces dans les packages java.sql et javax.sql de la documentation en ligne du Java SE.

Dans ce cadre un Driver est un point d'entrée à l'ensemble des classes implémentée pour un SGBD spécifique. En particulier ce Driver permet de se connecter au SGBD, à la manière d'un mysql_connect en PHP.

Connexion

Via une URL

Une URL JDBC est une l'adresse d'une base de données, utilisable par JDBC pour instancier le bon driver et se connecter à la dite base. La syntaxe de l'URL dépend du driver utilisé. Une fois la connection effectuée, on récupère une objet java.sql.Connection qui va permettre d'exécuter des requêtes.

Si dessous le code d'une classe qui se connecte au SGBD Oracle via une URL JDBC (serveur: pedagowin710, port: 1521, sid: orapeda1).

package fr.univlyon1.ecoquery;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
 
public class ConnexionURL {
 
	private static final String URL_JDBC = "jdbc:oracle:thin:@//pedagowin710:1521/orapeda1";
	private String DB_USERNAME = "M1IF000";
	private String DB_PASSWORD = "M1IF000";
 
	// Le code suivant permet d'assurer que le driver Oracle est chargé.
	static {
		try {
			ClassLoader.getSystemClassLoader().loadClass("oracle.jdbc.OracleDriver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
 
        // La connexion à proprement parler
	public Connection connect() throws SQLException {
		return DriverManager.getConnection(URL_JDBC, DB_USERNAME, DB_PASSWORD);
	}
 
}

Via un DataSource

Un DataSource est un objet permettant d'établir une connexion à une base d données (représentée par un objet de type Connection).

La classe ci-dessous utilise un DataSource pour se connecter à la base Oracle de pedagowin710:

package fr.univlyon1.ecoquery;
 
import java.sql.Connection;
import java.sql.SQLException;
 
import oracle.jdbc.pool.OracleDataSource;
 
public class ConnexionDataSource {
 
	private static final int DB_PORT = 1521;
	private static final String DB_USERNAME = "M1IF000";
	private static final String DB_PASSWORD = "M1IF000";
	private static final String ORACLE_DRIVER_TYPE = "thin";
	private static final String DB_SERVER = "pedagowin710";
	private static final String DB_NAME = "orapeda1";
 
	public Connection connect() throws SQLException {
		OracleDataSource ods = new OracleDataSource();
		ods.setDriverType(ORACLE_DRIVER_TYPE);
		ods.setServerName(DB_SERVER);
		ods.setPortNumber(DB_PORT);
		ods.setDatabaseName(DB_NAME);
		return ods.getConnection(DB_USERNAME, DB_PASSWORD);
	}
 
}