JDBC SAmeh
JDBC SAmeh
JDBC SAmeh
JDB
Les composants de la connexion avec une base de données sont gérés par le
DriverManager
1 M. LAARIF
Connexion à une base de données avec JDBC POOA
Tous les objets et les méthodes liés aux bases de données sont présents dans le
package java.sql, on doit importer java.sql.* dans tout programme qui utilise la
technologie JDBC.
Exemple :
Class.forName(" oracle.JDBC.driver.OracleDriver ");// Chargement du pilote Oracle
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");// Chargement du pilote ODBC
Class.forName("com.mysql.jdbc.Driver");// Chargement du pilote mysql
Pour se connecter à une base de données il faut fournir une URL qui indique où
se trouve la base :
URL ORACLE : jdbc:oracle:thin:@hostname:port Number:databaseName
URL ODBC : jdbc:odbc:IDDSN
URL mySQL : jdbc:mysql://hostname/ databaseName
URL DB2 : jdbc:db2:hostname:port Number/databaseName
URL Sybase : jdbc:sybase:Tds:hostname: port Number/databaseName
Et un login et un mot de passe pour un user autorisé.
La connexion à la base se fait en utilisant la méthode
DriverManager.getConnection("URL","user","pwd") throws SQLException, qui
retourne un objet de type Connection
Exemple :
Connection con2=
DriverManager.getConnection("jdbc:oracle:thin:@dbhost:1528:ORCL", "scott",
"tiger") ;
3 M. LAARIF
Connexion à une base de données avec JDBC POOA
Une colonne est designée par son ordre dans le résultat ou par son nom
La mise à jour d'une base de données peut être effectuée par le biais d'une
requête SQL de type UPDATE, INSERT ou DELETE à partir de la méthode
executeUpdate("Requête") sur un objet Statement.
Le résultat renvoyé par l'exécution de la requête indique le nombre de lignes
mises à jour dans la base, contrairement à une requête de sélection qui
renvoie un ResultSet.
Déconnexion :
La méthode close() permet de libérer les ressources prises par la création
d'objets de type ResultSet, Statement, et Connection.
4 M. LAARIF
Connexion à une base de données avec JDBC POOA
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JdbcExample2 {
public static void main(String args[]) {
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection
("jdbc:mysql://localhost:3306/hotel","user","123456");
if(!con.isClosed())
System.out.println("Connexion au serveur MySQL par TCP/IP...");
} catch(Exception e) {
System.err.println("Exception: " + e.getMessage());
} finally {
try {
if (con != null)
con.close();
} catch(SQLException e) {}
}
}
}
Méthode de chargement explicite d'un pilote :
void loadDriver() throws ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
}
L'appel à forName déclenche un chargement dynamique du pilote.
Class.forName(String className) : Retourne la classe d'objet associé à la
classe ou l'interface donné avec le nom de la chaîne de caractères.
Un programme peut utiliser plusieurs pilotes, un pour chaque base de
données. Le pilote doit être accessible à partir de la variable d'environnement
CLASSPATH.
Connexion à la base de données
Méthode d'ouverture d'une nouvelle connexion :
Connection newConnection() throws SQLException {
final String url = "jdbc:mysql://localhost/test";
Connection conn = DriverManager.getConnection(url,"user","pass");
return conn;
}
5 M. LAARIF
Connexion à une base de données avec JDBC POOA
nom varchar(15),
age INT,
primary key(id))";
st.executeUpdate(query);
Insertion de lignes
Statement st = conn.createStatement();
int nb = st.executeUpdate(
"INSERT INTO personne(Nom,Age) " +
"VALUES ('" + nom + "', " + age + ")"
);
Ce principe est aussi utilisable pour les instructions UPDATE et
DELETE.
Statement st = conn.createStatement();
int nb = st.executeUpdate(
"UPDATE personne " +
"SET Age = " + age + " " +
"WHERE Nom = '" + nom + "' "
);
import java.sql.*;
public class ExempleJdbc { // Connexion à une BD MySQL avec JDBC
et requête SQL
public ExempleJdbc() {
try {
this.loadDriver(); this.listEtudiants();
} catch (ClassNotFoundException e) {
System.err.println("Pilote JDBC introuvable : " + e.getMessage());
} catch (SQLException e) { }
}
void loadDriver() throws ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
}
Connection newConnection() throws SQLException {
final String url = "jdbc:mysql://localhost:3306/test";
Connection conn = DriverManager.getConnection(url, "client",
"123456");
return conn;
}
public void listEtudiants() throws SQLException {
Connection conn = null;
try {
conn = newConnection(); Statement st = conn.createStatement();
String query = "SELECT nom,prenom,age FROM etudiant ORDER BY
age";
7 M. LAARIF
Connexion à une base de données avec JDBC POOA
ResultSet rs = st.executeQuery(query);
while (rs.next()) {
System.out.printn(rs.getString(1)+" "+rs.getString("prenom")+"
"+rs.getInt(3));
}
} finally { if (conn != null) conn.close(); }
}
public static void main(String[] argv) { new ExempleJdbc(); } }
Création de la base de données "exemple" dans MySQL.
Se connecter en "root" sur MySQL et créer la base de données "exemple".
Se connecter sur la base "mysql" et définir les droits d'un utilisateur :
C:/xampp/mysql/bin/mysql -u root -p
mysql> create database exemple;
mysql> use exemple;
mysql> show databases;
mysql> use mysql;
mysql> grant all privileges on exemple.*
to 'login'@'localhost'identified by 'mot_de_passe_base_de_données'
with grant option;
mysql> flush privileges;
mysql> exit;
8 M. LAARIF