SlideShare une entreprise Scribd logo
JDBC: manipuler une base de
données en Java
IFT6800 – E 2007
Jian-Yun Nie
Intermédiaire
• JDBC: Java database connectivity
– Cette API à était développée par SUN pour permettre
à des applications Java d'accéder à des bases de
données relationnelles quelconques.

• Les étapes principales
– Se connecter à une base de données
– Envoyer une requête SQL
– Manipuler le résultat

• JDBC: un driver (pilot) fournissant des outils
pour ces fonctions
Préparatif
• Installer un driver JDBC
– E.g. SQL server 2000 de Microsoft
http://msdn2.microsoft.com/en-us/sql/aa336272.aspx

– pont ODBC/JDBC (Open DataBase
Connectivity)
Étape 1: charger le pilote
• Charger le pilote (driver)
– Pilote: contient toutes les classes nécessaire pour communiquer
avec une base de données
– il faut utiliser la méthode forName de la classe Class
– E.g.
• SQL Server 2000:
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
• Pont ODBC-JDBC
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

– Cette méthode charge en mémoire la classe demandée et exécute
son éventuel bloc static.
• static { BaseDriver.registerDriver(new SQLServerDriver()); }

– Pour que cela fonctionne, il faut définir la variable d’environnement
CLASSPATH pour inclure le répertoire contenant les classes du
driver
Étape 2: établir une connexion
• Pour établir la connexion avec SQL Server, il faut préciser
– le nom de la machine (ou son numéro IP),
– le port où le service SQL est démarré (quasiment toujours
1433),
– le nom de la base de données,
– le login utilisé ainsi que son mot de passe.
try { String strClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String strUrl = "jdbc:microsoft:sqlserver://hostname:1433;" +
"user=sa;password=pass;DatabaseName=dbName";
Charger le pilote
Class.forName(strClassName);
Connection conn = DriverManager.getConnection(strUrl);
Établir la connexion
// . . .
conn.close();
opérations
}
catch(ClassNotFoundException e) {
System.err.println("Driver non chargé !");
e.printStackTrace();
} catch(SQLException e) {
// . . .
}
Étape 2: établir une connexion
•

Établir la connexion avec MySQL
– DriverManager: la méthode statique getConnection va créer un objet de
connexion
– Paramètre: le protocole et le sous-protocole:
• jdbc:odbc:DsnName
• DSN (Data Source Name)

Connection conn = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection("jdbc:odbc:DsnName");
// . . .
conn.close();
} catch(ClassNotFoundException e) {
System.err.println("Driver non chargé !");
e.printStackTrace();
} catch(SQLException e) {
// . . .
}
Étape 3: Requête SQL
• L’exécution d’une requête SQL passe par
l'utilisation d'une classe, spécifique au pilote
utilisé, implémentant l'interface Statement
• Un objet de type Statement se doit d'être
adapté à la base manipulée. JDBC ne fournit
que l'interface Statement, qui est implantée par
différentes classes dans un pilote
• Obtenir un objet Statement: avec la méthode
createStatement.
Exemple
try { String strClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String strUrl = "jdbc:microsoft:sqlserver://hostname:1433;"
+ "user=sa;password=pass;DatabaseName=dbName";
String strInsert = "INSERT INTO T_Users "
+ "(Login, Password, ConnectionNumber) "
+ "VALUES ('Toto', 'Titi', 0);";
Class.forName(strClassName);
Connection conn = DriverManager.getConnection(strUrl);
Statement stAddUser = conn.createStatement();
stAddUser.executeUpdate(strInsert);
conn.close();
}
catch(ClassNotFoundException e) {
// . . .
} catch(SQLException e) {
// . . .
}

Créer un Statement
Exécuter un ordre SQL
Exécuter une requête SELECT
•
•

l'ordre SQL "SELECT * FROM T_Users;"
L'appel à "executeQuery" renvoie au final un objet de type ResultSet

try {
String strClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String strUrl = "jdbc:microsoft:sqlserver://hostname:1433;"
+ "user=sa;password=pass;DatabaseName=dbName";
String strQuery = "SELECT * FROM T_Users;";
Class.forName(strClassName);
Connection conn = DriverManager.getConnection(strUrl);
Statement stLogin = conn.createStatement();
ResultSet rsLogin = stLogin.executeQuery(strQuery);
// . . . Utilisation du ResultSet . . .
conn.close();
}
catch(ClassNotFoundException e) {
// . . .
} catch(SQLException e) {
// . . .
}

requête

Exécuter la requête et
stocker le résultat
Manipuler le résultat
• On peut identifier chaque colonne de la base de donnée
– Par son index
– Par son nom

String strQuery = "SELECT * FROM T_Users;";
ResultSet rsUsers = stUsers.exexcuteQuery(strQuery);
while(rsUsers.next()) {
System.out.print("Id[" + rsUsers.getInt(1) + "]"
+ rsUsers.getString(2)
+ "[" + rsUsers.getString("Password") + "] "
+ rsUsers.getInt("ConnectionNumber") ); }
rsUsers.close();
Plusieurs mode de parcours
st = conn.createStatement(type, mode);
Type ==
ResultSet.TYPE_FORWARD_ONLY
ResultSet.TYPE_SCROLL_SENSITIVE
ResultSet.TYPE_SCROLL_INSENSITIVE
Mode ==
ResultSet.CONCUR_READ_ONLY
ResultSet.CONCUR_UPDATABLE
Modifier le résultat ou la base
• Se positionne sur le premier enregistrement
– rsUsers.first();

• Ou avancer jusqu’à l’élément voulu
• Modifie la valeur du Password dans le résultat
– rsUsers.updateString("Password", "toto");

• Pour appliquer les modifications dans la base de
données:
– rsUsers.updateRow();
Autres opérations
• Stocker une procédure
• Gérer des transactions
• …
Récapitulation du cours
• Les éléments pour faire fonctionner un
programme
– Matériels: mémoire, CPU, bus, registres, disque,
périphériques, …
– Système d’exploitation: gérer les matériels, outils de
base pour télécommunication, gestion et manipulation
de fichiers, …
– Applications: base de données, programme
d’utilisateur
– Communication entre des applications et entre des
ordinateurs
• Protocole
• Connexion et transfert
Schéma typique
•

Programmation
– Un programmeur écrit un programme en un langage (Java)
– Compilation, tests…
– Livraison à l’utilisateur

•

Utilisation
– Sur Ordinateur 1, on installe l’environnement approprié
•
•
•
•
•

Système d’exploitation
Les outils nécessaires pour l’exécution du programme
(éventuellement un compilateur)
Connexion Internet
…

– un utilisateur lance un programme
• Ce programme est exécuté
• Éventuellement
–
–
–
–
–
–
–
–

accéder aux données sur le disque
Demander des données à l’utilisateur
Demander à connecter à un serveur
Demander des informations du serveur
Traiter des information
Écrire sur le disque, dans une base de données ou sur le serveur
Affichage à l’utilisateur
…

Contenu connexe

Tendances

Introduction à ajax
Introduction à ajaxIntroduction à ajax
Introduction à ajax
Abdoulaye Dieng
 
JNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory InterfacesJNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory Interfaces
benouini rachid
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objets
Abdoulaye Dieng
 
Formation JPA Java persistence API
Formation JPA Java persistence APIFormation JPA Java persistence API
Formation JPA Java persistence API
Thibault Cuvillier
 
Les Streams de Java 8
Les Streams de Java 8Les Streams de Java 8
Les Streams de Java 8
Antoine Rey
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
Abdoulaye Dieng
 
Marzouk jsp
Marzouk jspMarzouk jsp
Marzouk jsp
abderrahim marzouk
 
Retours Devoxx France 2016
Retours Devoxx France 2016Retours Devoxx France 2016
Retours Devoxx France 2016
Antoine Rey
 
Introduction à JPA (Java Persistence API )
Introduction à JPA  (Java Persistence API )Introduction à JPA  (Java Persistence API )
Introduction à JPA (Java Persistence API )
Daniel Rene FOUOMENE PEWO
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
Abdoulaye Dieng
 
Sqlalchemy declaratif
Sqlalchemy declaratifSqlalchemy declaratif
Sqlalchemy declaratifAffinitic
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
Abdoulaye Dieng
 
Nouveautés Java 9-10-11
Nouveautés Java 9-10-11Nouveautés Java 9-10-11
Nouveautés Java 9-10-11
Mahamadou TOURE, Ph.D.
 

Tendances (13)

Introduction à ajax
Introduction à ajaxIntroduction à ajax
Introduction à ajax
 
JNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory InterfacesJNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory Interfaces
 
Cpp2 : classes et objets
Cpp2 : classes et objetsCpp2 : classes et objets
Cpp2 : classes et objets
 
Formation JPA Java persistence API
Formation JPA Java persistence APIFormation JPA Java persistence API
Formation JPA Java persistence API
 
Les Streams de Java 8
Les Streams de Java 8Les Streams de Java 8
Les Streams de Java 8
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Marzouk jsp
Marzouk jspMarzouk jsp
Marzouk jsp
 
Retours Devoxx France 2016
Retours Devoxx France 2016Retours Devoxx France 2016
Retours Devoxx France 2016
 
Introduction à JPA (Java Persistence API )
Introduction à JPA  (Java Persistence API )Introduction à JPA  (Java Persistence API )
Introduction à JPA (Java Persistence API )
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Sqlalchemy declaratif
Sqlalchemy declaratifSqlalchemy declaratif
Sqlalchemy declaratif
 
Introduction à Symfony
Introduction à SymfonyIntroduction à Symfony
Introduction à Symfony
 
Nouveautés Java 9-10-11
Nouveautés Java 9-10-11Nouveautés Java 9-10-11
Nouveautés Java 9-10-11
 

En vedette

Cours Génie Logiciel - Introduction
Cours Génie Logiciel - IntroductionCours Génie Logiciel - Introduction
Cours Génie Logiciel - Introduction
Mohammed Amine Mostefai
 
Génie Logiciels : Introduction aux architectures
Génie Logiciels : Introduction aux architecturesGénie Logiciels : Introduction aux architectures
Génie Logiciels : Introduction aux architectures
Mohammed Amine Mostefai
 
Enterprise Java Beans - EJB
Enterprise Java Beans - EJBEnterprise Java Beans - EJB
Enterprise Java Beans - EJB
Peter R. Egli
 
Cours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieCours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vie
Mohammed Amine Mostefai
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
Heithem Abbes
 
Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)
Heithem Abbes
 
Introduction aux architectures des SI
Introduction aux architectures des SI Introduction aux architectures des SI
Introduction aux architectures des SI
Heithem Abbes
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
Heithem Abbes
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)
Heithem Abbes
 
Introduction au génie logiciel 1.2
Introduction au génie logiciel 1.2Introduction au génie logiciel 1.2
Introduction au génie logiciel 1.2
Stéphane Salmons
 
Cycle de vie d’un logiciel
Cycle de vie d’un logicielCycle de vie d’un logiciel
Cycle de vie d’un logicielMehdi Abed
 
L Architecture Logicielle En Pratique
L Architecture Logicielle En PratiqueL Architecture Logicielle En Pratique
L Architecture Logicielle En Pratique
François Trudel
 
java BDD jdbc
java BDD jdbcjava BDD jdbc
java BDD jdbcvangogue
 
Introduction jdbc
Introduction  jdbcIntroduction  jdbc
Introduction jdbcKarim Amane
 

En vedette (15)

Cours Génie Logiciel - Introduction
Cours Génie Logiciel - IntroductionCours Génie Logiciel - Introduction
Cours Génie Logiciel - Introduction
 
Génie Logiciels : Introduction aux architectures
Génie Logiciels : Introduction aux architecturesGénie Logiciels : Introduction aux architectures
Génie Logiciels : Introduction aux architectures
 
Enterprise Java Beans - EJB
Enterprise Java Beans - EJBEnterprise Java Beans - EJB
Enterprise Java Beans - EJB
 
Cours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vieCours Génie Logiciel - Cours 2 - Cycles de vie
Cours Génie Logiciel - Cours 2 - Cycles de vie
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
 
Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)Entreprise Java Beans (EJB)
Entreprise Java Beans (EJB)
 
Introduction aux architectures des SI
Introduction aux architectures des SI Introduction aux architectures des SI
Introduction aux architectures des SI
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)
 
Introduction au génie logiciel 1.2
Introduction au génie logiciel 1.2Introduction au génie logiciel 1.2
Introduction au génie logiciel 1.2
 
Cycle de vie d’un logiciel
Cycle de vie d’un logicielCycle de vie d’un logiciel
Cycle de vie d’un logiciel
 
L Architecture Logicielle En Pratique
L Architecture Logicielle En PratiqueL Architecture Logicielle En Pratique
L Architecture Logicielle En Pratique
 
java BDD jdbc
java BDD jdbcjava BDD jdbc
java BDD jdbc
 
Introduction jdbc
Introduction  jdbcIntroduction  jdbc
Introduction jdbc
 
Jdbc par4
Jdbc par4Jdbc par4
Jdbc par4
 

Similaire à Jdbc

Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
Korteby Farouk
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
ENSET, Université Hassan II Casablanca
 
Présentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptxPrésentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptx
salmachtioui1
 
1145709.ppt
1145709.ppt1145709.ppt
1145709.ppt
hashiramasenju65
 
Java et bases de données : JDBC
Java et bases de données : JDBCJava et bases de données : JDBC
Java et bases de données : JDBC
Mohammed Jaafar
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications JavaAntoine Rey
 
3-android.pdf
3-android.pdf3-android.pdf
3-android.pdf
FethiBenYahia1
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
Abdoulaye Dieng
 
Activity
ActivityActivity
Activitydido
 
Mettez du temps réel dans votre Drupal avec Node JS
Mettez du temps réel dans votre Drupal avec Node JSMettez du temps réel dans votre Drupal avec Node JS
Mettez du temps réel dans votre Drupal avec Node JSMatthieu Guillermin
 
Les Servlets et JSP
Les Servlets et JSPLes Servlets et JSP
Les Servlets et JSP
Korteby Farouk
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hoodsvuillet
 
Android ORMLite
Android   ORMLiteAndroid   ORMLite
Android ORMLite
Franck SIMON
 
PHP_partie_.ppt,php_cours_mathematiques_informatiques
PHP_partie_.ppt,php_cours_mathematiques_informatiquesPHP_partie_.ppt,php_cours_mathematiques_informatiques
PHP_partie_.ppt,php_cours_mathematiques_informatiques
oumaimanouari
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
Abdoulaye Dieng
 
JDBC Java
JDBC JavaJDBC Java
JDBC Java
Sofien AZOUZI
 
Développement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdfDéveloppement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdf
YasushiTsubakik
 
OWF12/HTML 5 local storage , olivier thomas, cto at webtyss
OWF12/HTML 5 local storage , olivier thomas, cto at webtyssOWF12/HTML 5 local storage , olivier thomas, cto at webtyss
OWF12/HTML 5 local storage , olivier thomas, cto at webtyssParis Open Source Summit
 
#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart Client
Guillaume Sauthier
 

Similaire à Jdbc (20)

Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
 
Support Java Avancé Troisième Partie
Support Java Avancé Troisième PartieSupport Java Avancé Troisième Partie
Support Java Avancé Troisième Partie
 
Présentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptxPrésentaion sur le modéle JDBC JEE .pptx
Présentaion sur le modéle JDBC JEE .pptx
 
1145709.ppt
1145709.ppt1145709.ppt
1145709.ppt
 
Java et bases de données : JDBC
Java et bases de données : JDBCJava et bases de données : JDBC
Java et bases de données : JDBC
 
Springioc
SpringiocSpringioc
Springioc
 
Workshop spring session 2 - La persistance au sein des applications Java
Workshop spring   session 2 - La persistance au sein des applications JavaWorkshop spring   session 2 - La persistance au sein des applications Java
Workshop spring session 2 - La persistance au sein des applications Java
 
3-android.pdf
3-android.pdf3-android.pdf
3-android.pdf
 
php2 : formulaire-session-PDO
php2 : formulaire-session-PDOphp2 : formulaire-session-PDO
php2 : formulaire-session-PDO
 
Activity
ActivityActivity
Activity
 
Mettez du temps réel dans votre Drupal avec Node JS
Mettez du temps réel dans votre Drupal avec Node JSMettez du temps réel dans votre Drupal avec Node JS
Mettez du temps réel dans votre Drupal avec Node JS
 
Les Servlets et JSP
Les Servlets et JSPLes Servlets et JSP
Les Servlets et JSP
 
GWT : under the hood
GWT : under the hoodGWT : under the hood
GWT : under the hood
 
Android ORMLite
Android   ORMLiteAndroid   ORMLite
Android ORMLite
 
PHP_partie_.ppt,php_cours_mathematiques_informatiques
PHP_partie_.ppt,php_cours_mathematiques_informatiquesPHP_partie_.ppt,php_cours_mathematiques_informatiques
PHP_partie_.ppt,php_cours_mathematiques_informatiques
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 
JDBC Java
JDBC JavaJDBC Java
JDBC Java
 
Développement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdfDéveloppement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdf
 
OWF12/HTML 5 local storage , olivier thomas, cto at webtyss
OWF12/HTML 5 local storage , olivier thomas, cto at webtyssOWF12/HTML 5 local storage , olivier thomas, cto at webtyss
OWF12/HTML 5 local storage , olivier thomas, cto at webtyss
 
#5 Java EE5 Client Lourd et Smart Client
#5 Java EE5  Client Lourd  et Smart Client#5 Java EE5  Client Lourd  et Smart Client
#5 Java EE5 Client Lourd et Smart Client
 

Jdbc

  • 1. JDBC: manipuler une base de données en Java IFT6800 – E 2007 Jian-Yun Nie
  • 2. Intermédiaire • JDBC: Java database connectivity – Cette API à était développée par SUN pour permettre à des applications Java d'accéder à des bases de données relationnelles quelconques. • Les étapes principales – Se connecter à une base de données – Envoyer une requête SQL – Manipuler le résultat • JDBC: un driver (pilot) fournissant des outils pour ces fonctions
  • 3. Préparatif • Installer un driver JDBC – E.g. SQL server 2000 de Microsoft http://msdn2.microsoft.com/en-us/sql/aa336272.aspx – pont ODBC/JDBC (Open DataBase Connectivity)
  • 4. Étape 1: charger le pilote • Charger le pilote (driver) – Pilote: contient toutes les classes nécessaire pour communiquer avec une base de données – il faut utiliser la méthode forName de la classe Class – E.g. • SQL Server 2000: Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); • Pont ODBC-JDBC Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); – Cette méthode charge en mémoire la classe demandée et exécute son éventuel bloc static. • static { BaseDriver.registerDriver(new SQLServerDriver()); } – Pour que cela fonctionne, il faut définir la variable d’environnement CLASSPATH pour inclure le répertoire contenant les classes du driver
  • 5. Étape 2: établir une connexion • Pour établir la connexion avec SQL Server, il faut préciser – le nom de la machine (ou son numéro IP), – le port où le service SQL est démarré (quasiment toujours 1433), – le nom de la base de données, – le login utilisé ainsi que son mot de passe. try { String strClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; String strUrl = "jdbc:microsoft:sqlserver://hostname:1433;" + "user=sa;password=pass;DatabaseName=dbName"; Charger le pilote Class.forName(strClassName); Connection conn = DriverManager.getConnection(strUrl); Établir la connexion // . . . conn.close(); opérations } catch(ClassNotFoundException e) { System.err.println("Driver non chargé !"); e.printStackTrace(); } catch(SQLException e) { // . . . }
  • 6. Étape 2: établir une connexion • Établir la connexion avec MySQL – DriverManager: la méthode statique getConnection va créer un objet de connexion – Paramètre: le protocole et le sous-protocole: • jdbc:odbc:DsnName • DSN (Data Source Name) Connection conn = null; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conn = DriverManager.getConnection("jdbc:odbc:DsnName"); // . . . conn.close(); } catch(ClassNotFoundException e) { System.err.println("Driver non chargé !"); e.printStackTrace(); } catch(SQLException e) { // . . . }
  • 7. Étape 3: Requête SQL • L’exécution d’une requête SQL passe par l'utilisation d'une classe, spécifique au pilote utilisé, implémentant l'interface Statement • Un objet de type Statement se doit d'être adapté à la base manipulée. JDBC ne fournit que l'interface Statement, qui est implantée par différentes classes dans un pilote • Obtenir un objet Statement: avec la méthode createStatement.
  • 8. Exemple try { String strClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; String strUrl = "jdbc:microsoft:sqlserver://hostname:1433;" + "user=sa;password=pass;DatabaseName=dbName"; String strInsert = "INSERT INTO T_Users " + "(Login, Password, ConnectionNumber) " + "VALUES ('Toto', 'Titi', 0);"; Class.forName(strClassName); Connection conn = DriverManager.getConnection(strUrl); Statement stAddUser = conn.createStatement(); stAddUser.executeUpdate(strInsert); conn.close(); } catch(ClassNotFoundException e) { // . . . } catch(SQLException e) { // . . . } Créer un Statement Exécuter un ordre SQL
  • 9. Exécuter une requête SELECT • • l'ordre SQL "SELECT * FROM T_Users;" L'appel à "executeQuery" renvoie au final un objet de type ResultSet try { String strClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; String strUrl = "jdbc:microsoft:sqlserver://hostname:1433;" + "user=sa;password=pass;DatabaseName=dbName"; String strQuery = "SELECT * FROM T_Users;"; Class.forName(strClassName); Connection conn = DriverManager.getConnection(strUrl); Statement stLogin = conn.createStatement(); ResultSet rsLogin = stLogin.executeQuery(strQuery); // . . . Utilisation du ResultSet . . . conn.close(); } catch(ClassNotFoundException e) { // . . . } catch(SQLException e) { // . . . } requête Exécuter la requête et stocker le résultat
  • 10. Manipuler le résultat • On peut identifier chaque colonne de la base de donnée – Par son index – Par son nom String strQuery = "SELECT * FROM T_Users;"; ResultSet rsUsers = stUsers.exexcuteQuery(strQuery); while(rsUsers.next()) { System.out.print("Id[" + rsUsers.getInt(1) + "]" + rsUsers.getString(2) + "[" + rsUsers.getString("Password") + "] " + rsUsers.getInt("ConnectionNumber") ); } rsUsers.close();
  • 11. Plusieurs mode de parcours st = conn.createStatement(type, mode); Type == ResultSet.TYPE_FORWARD_ONLY ResultSet.TYPE_SCROLL_SENSITIVE ResultSet.TYPE_SCROLL_INSENSITIVE Mode == ResultSet.CONCUR_READ_ONLY ResultSet.CONCUR_UPDATABLE
  • 12. Modifier le résultat ou la base • Se positionne sur le premier enregistrement – rsUsers.first(); • Ou avancer jusqu’à l’élément voulu • Modifie la valeur du Password dans le résultat – rsUsers.updateString("Password", "toto"); • Pour appliquer les modifications dans la base de données: – rsUsers.updateRow();
  • 13. Autres opérations • Stocker une procédure • Gérer des transactions • …
  • 14. Récapitulation du cours • Les éléments pour faire fonctionner un programme – Matériels: mémoire, CPU, bus, registres, disque, périphériques, … – Système d’exploitation: gérer les matériels, outils de base pour télécommunication, gestion et manipulation de fichiers, … – Applications: base de données, programme d’utilisateur – Communication entre des applications et entre des ordinateurs • Protocole • Connexion et transfert
  • 15. Schéma typique • Programmation – Un programmeur écrit un programme en un langage (Java) – Compilation, tests… – Livraison à l’utilisateur • Utilisation – Sur Ordinateur 1, on installe l’environnement approprié • • • • • Système d’exploitation Les outils nécessaires pour l’exécution du programme (éventuellement un compilateur) Connexion Internet … – un utilisateur lance un programme • Ce programme est exécuté • Éventuellement – – – – – – – – accéder aux données sur le disque Demander des données à l’utilisateur Demander à connecter à un serveur Demander des informations du serveur Traiter des information Écrire sur le disque, dans une base de données ou sur le serveur Affichage à l’utilisateur …