Implémentation de l'interface Driver
L'interface java.sql.Driver est implémentée par tous les pilotes JDBC. Les fournisseurs de bases de données founrissent des implémentations spécifiques :
- MySQL :
com.mysql.cj.jdbc.Driver - Oracle :
oracle.jdbc.OracleDriver
Chargement du pilote JDBC
Utilisez Class.forName() pour charger dynamiquement le pilote :
Class.forName("com.mysql.cj.jdbc.Driver");
L'enregistrement auprès de DriverManager s'effectue automatiquement via un bloc statique dans la classe du pilote.
Format des URL JDBC
Structure standard : jdbc:sous-protocol:sous-nom
| Base de données | Format d'URL |
|---|---|
| MySQL | jdbc:mysql://serveur:3306/base?param=valeur |
| Oracle | jdbc:oracle:thin:@serveur:1521:SID |
| SQL Server | jdbc:sqlserver://serveur:1433;databaseName=base |
Méthodes de connexion
Initialisation directe
@Test
public void connexionDirecte() {
try {
ConnexionMySQL pilote = new ConnexionMySQL();
String url = "jdbc:mysql://localhost:3306/base";
Properties auth = new Properties();
auth.put("user", "admin");
auth.put("password", "secret");
Connection lien = pilote.connecter(url, auth);
} catch (SQLException e) { e.printStackTrace(); }
}
Réflexion avec instanciation
@Test
public void connexionReflexion() {
try {
Class piloteClasse = Class.forName("com.mysql.cj.jdbc.Driver");
Connexeur pilote = (Connexeur) piloteClasse.newInstance();
Properties auth = new Properties();
auth.setProperty("user", "admin");
// ... (connexion similaire)
} catch (Exception e) { e.printStackTrace(); }
}
Utilisation de DriverManager
@Test
public void viaDriverManager() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
DriverManager.enregisterDriver(new ConnexionMySQL());
Connection lien = DriverManager.obtenirConnexion(
"jdbc:mysql://localhost:3306/base", "admin", "secret");
} catch (Exception e) { e.printStackTrace(); }
}
Chargement automatique
@Test
public void chargementAuto() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection lien = DriverManager.obtenirConnexion(
"jdbc:mysql://localhost:3306/base", "admin", "secret");
} catch (Exception e) { e.printStackTrace(); }
}
Configuration externe
@Test
public void avecConfiguration() throws Exception {
InputStream config = getClass().getClassLoader()
.getResourceAsStream("db.conf");
Properties props = new Properties();
props.load(config);
Class.forName(props.getProperty("pilote"));
Connection lien = DriverManager.obtenirConnexion(
props.getProperty("url"),
props.getProperty("utilisateur"),
props.getProperty("motdepasse"));
}
Exemple de fichier db.conf :
utilisateur=admin
motdepasse=secret
url=jdbc:mysql://localhost:3306/base
pilote=com.mysql.cj.jdbc.Driver