Jdbc

mohamed el haddad
mohamed el haddadEnseignant Chercheur en Informatique at Ecole Nationale des Sciences Appliquées de Tanger em Ecole Nationale des Sciences Appliquées de Tanger
Cours Bases de donn´ees 2`eme ann´ee IUT
Cours 6 : JDBC : ou comment lier ORACLE avec Java
1`ere partie
Anne Vilnat
http://www.limsi.fr/Individu/anne/cours
Plan
1 Introduction
2 les ´etapes de la connexion
Mise en place du pilote
Nommer la base de donn´ees
Etablir la connexion
Dialogue avec la base de donn´ees
Deconnexion
Introduction : le probl`eme
BDAppli Java
?
Usage
JDBC pour ex´ecuter, depuis un programme Java, l’ensemble des
ordres SQL reconnus par la base de donn´ees cible.
La base de donn´ees doit reconnaˆıtre le langage ANSI SQL-2.
Introduction : JDBC
BD
APIJDBC
Appli Java
?
D´efinition
JDBC (Java DataBase Connectivity) est une API (Application
Programming Interface) qui permet d’ex´ecuter des instructions
SQL.
JDBC fait partie du JDK (Java Development Kit).
Paquetage java.sql :
import java.sql.*;
Introduction : Gestion du pilote
BDAPIJDBCAppli Java
?
JDBCDriverManager
Le pilote...
Il va ´etablir le lien avec la base de donn´ees, en sachant “lui parler”.
Dans JDBC : des classes charg´ees de g´erer un pilote...
Pilote “r´ecent” : en Java
Des pilotes existent pour mySQL, postGresSQL, ACCESS,...
Introduction : Driver Manager
BDAPIJDBCAppli Java
JDBCDriverManager
DriverProtocolenatif
Java
Appels SQL
La connexion...
Elle peut s’´etablir SI on donne l’adresse de la BD `a laquelle se
connecter...
Les classes et interfaces du package java.sql
PreparedStatement CallableStatement
Data Types
prepareCall
sous−classe
Entrées de PS
executeQuery
sous−classe
getXXX
executeQuery
getMoreResults/getResultSet
Entrées/Sorties de CS
prepareStatement
Connexion
Statement
ResultSet
createStatement
executeQuery
Etapes
Fonctionnement
Etapes d’un programme utilisant JDBC :
1 mettre en place le pilote ou driver.
2 ´etablir une connexion avec une source de donn´ees.
3 effectuer les requˆetes.
4 utiliser les donn´ees obtenues pour des affichages, des
traitements statistiques, etc.
5 mettre `a jour les informations de la source des donn´ees.
6 terminer la connexion.
7 ´eventuellement, recommencer en 1.
Les ´etapes...
exemples
1 charger un pilote driver
Class.forName(“oracle.jdbc.driver.OracleDriver”);
2 cr´eer un objet Connection
Connection.maConnection=DriverManager.getConnection(url);
url : String contenant l’adresse de la base de donn´ees
3 cr´eer un objet Statement
Statement.maRequeteSQL=maConnection();
4 envoyer la requˆete et r´ecup´erer le r´esultat dans un ResultSet
ResultSet.monResultat=
maRequeteSQL.executeQuery(texteRequeteSQL);
texteRequeteSQL : String contenant le texte de la requˆete,
par exemple :
“SELECT * FROM Client”
Mise en place du pilote
2 m´ethodes :
Chargement statique
enregistrer le ou les drivers(s) `a utiliser
`a chaque connexion, passer comme argument l’url
correspondante
utiliser l’interface java.sql.Driver : ´ecrire une classe Driver,
pour cr´eer une instance d’elle-mˆeme et l’enregistrer avec la
m´ethode DriverManager.registerDriver()
pas la plus simple, ni la plus usit´ee...
Mise en place du pilote
Chargement dynamique
A la demande, sans noter explicitement le nom des classes :
try {
Class.forName(“oracle.jdbc.driver.OracleDriver”);
}
catch (Exception e){
System.out.println(”Impossible de charger le driver”);
return;
}
Des pilotes existent pour mySQL, postGresSQL, ACCESS,...
Nommage des bases de donn´ees
D´eriv´ee des url d’internet.
Sch´ema g´en´eral
jdbc:<sous-protocole>:<compl´ements>
jdbc = protocole
sous-protocole : pour distinguer le type de pilote jdbc oracle:thin `a
l’IUT
complements : la base de donn´ees. Syntaxe :
login/motDePasse@ordinateur:port:base.
Exemple : toto/mdpToto@orasrv1.ens.iut-orsay.fr:1521:etudom
Connexion
par la m´ethode getConnection de DriverManager :
Exemple
import java.net.*;
import java.sql.*;
String url=
”jdbc:oracle:thin:toto/mdpToto@r2d2.iut-orsay.u-
psud.fr:1521:etudom”;
try {
Class.forName(“oracle.jdbc.driver.OracleDriver”);
}
catch (Exception e){
System.out.println(”Impossible de charger le driver”);
return;
Connection maConnexion=DriverManager.getConnection(url); }
Connexion
ou en utilisant les objets DataSource
Exemple
import java.sql.*;
import oracle.jdbc.pool.*;
public class TestDataSource {
public static void main(String args[])
throws ClassNotFoundException, SQLException {
OracleDataSource ds = new OracleDataSource();
ds.setDriverType(’thin”);
ds.setServerName’(“r2d2”);
ds.setPortNumber(1521);
ds.setDataBaseName(“etudom”);
ds.setUser(“toto”);
ds.setPassword(“mdpToto”);
Connection maConnexion=DriverManager.getConnection(url); }
Les tuyaux sont en place...
BD
APIJDBC
Appli Java JDBCDriverManager
DriverProtocolenatif
Java
Appels SQL
Rappel : les classes et interfaces du package java.sql
PreparedStatement CallableStatement
Data Types
prepareCall
sous−classe
Entrées de PS
executeQuery
sous−classe
getXXX
executeQuery
getMoreResults/getResultSet
Entrées/Sorties de CS
prepareStatement
Connexion
Statement
ResultSet
createStatement
executeQuery
Pour dialoguer : Statement
Exemple
Statement monInstruction = maConnexion.createStatement();
suivant l’instruction SQL
Instructions SQL M´ethode Type retourn´e Valeur
retourn´ee
SELECT executeQuery ResultSet Lignes de
r´esultat
UPDATE, executeUpdate int Nb lignes
INSERT,DELETE modifi´ees
Autres execute boolean Faux
si erreur
Consultation et r´ecup´eration de donn´ees
Exemple
ResultSet monR´esultat = monInstruction.executeQuery(
“SELECT login, nomClient FROM toto.Client”);
ResultsSet et ses m´ethodes
R´esultat dans un ResultSet
Parcours analogue `a celui d’un curseur avec la m´ethode next, et
acc`es aux colonnes avec getXXX
Exemple de parcours
while (monResultat.next()) {
String nom = monResultat.getString(“nomClient”);
int login=monResultat.getInt (“login”);
// traitement des donn´ees r´ecup´er´ees
}
Consultation et r´ecup´eration de donn´ees
ResultsSet et ses m´ethodes
Le premier next positionne sur la premi`ere ligne.
Param`etres de getXXX : nom de l’attribut ou rang dans la requˆete
(sous forme d’entier). Obligatoire pour les attributs calcul´es
(MAX(...) ou quand les noms ne sont pas connus (SELECT *...)
Exemple de parcours
while (monResultat.next()) {
String nom = monResultat.getString(2);
int login=monResultat.getInt (1);
// traitement des donn´ees r´ecup´er´ees
}
Les correspondances de types
Type SQL Type Java
CHAR, VARCHAR2, String
NUMERIC, DECIMAL java.math.BigDecimal
BIT boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT, DOUBLE double
BINARY, VARBINARY, LONGVARBINARY byte [ ]
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
Les valeurs NULL
Probl`eme : reconnaˆıtre dans Java le cas d’une valeur NULL.
Conventions :
Pour les m´ethodes getString(), getObject(), getDate(), ... :
Null Java (il existe)
Pour les m´ethodes getInt(), getByte(), getShort(), ... : la
valeur 0 est renvoy´ee
Pour la m´ethode getBoolean(), la valeur Faux est renvoy´ee.
MAIS pas correct pour reconnaˆıtre des valeurs non renseign´ees
dans la base...
D’o`u la m´ethode wasNull() de ResultSet.
Fonctionnement :
lire la donn´ee,
tester avec wasNull() si elle vaut NULL au sens SQL
Acc`es et mise `a jour
Pour INSERT, DELETE et UPDATE...
La classe Statement a : executeUpdate()
Elle retourne un int qui contient le nombre de lignes affect´ees par
l’instruction.
Exemple
int nbLignes = monInstruction.executeUpdate(
“INSERT INTO toto.Client(login, nomClient)
VALUES (“ + numero + “,” + nom + “)”);
System.out.println(nbLignes + “ ligne(s) ins´er´ee(s)”) ;
Modification de la d´efinition des donn´ees
Pour modifier la structure de la base
La classe Statement a : execute(ordreSQL)
L’ordre SQL correspond `a la chaˆıne de caract`eres contenant l’ordre
`a ´ex´ecuter
Elle retourne un boolean qui est vrai si il n’y a pas eu d’erreur `a
l’´ex´ecution..
D´econnexion
Lib´erer ResultSet et Statement, fermer la Connection
Exemple
monResultat.close() ;
monInstruction.close() ;
maConnexion.close() ;
1 de 24

Recomendados

Accès aux bases de données via jdbc por
Accès aux bases de données via jdbcAccès aux bases de données via jdbc
Accès aux bases de données via jdbcRachid Lajouad
931 visualizações10 slides
JAVA, JDBC et liaison base de données por
JAVA, JDBC et liaison base de donnéesJAVA, JDBC et liaison base de données
JAVA, JDBC et liaison base de donnéesJean David Olekhnovitch
9.2K visualizações51 slides
Jdbc por
JdbcJdbc
JdbcNizar Turki
467 visualizações15 slides
JDBC: Gestion des bases de données en Java por
JDBC: Gestion des bases de données en Java JDBC: Gestion des bases de données en Java
JDBC: Gestion des bases de données en Java Youness Boukouchi
2.7K visualizações44 slides
Fmin103 0910 tpjdbc por
Fmin103 0910 tpjdbcFmin103 0910 tpjdbc
Fmin103 0910 tpjdbcKarim Amane
265 visualizações8 slides
Marzouk une introduction à jdbc por
Marzouk une introduction à jdbcMarzouk une introduction à jdbc
Marzouk une introduction à jdbcabderrahim marzouk
63 visualizações27 slides

Mais conteúdo relacionado

Mais procurados

Hibernate por
HibernateHibernate
HibernateGhazouani Mahdi
4.6K visualizações17 slides
Jpa Spring Hibernate por
Jpa Spring HibernateJpa Spring Hibernate
Jpa Spring Hibernatezaheryamak
2.6K visualizações50 slides
Marzouk architecture encouches-jee-mvc por
Marzouk architecture encouches-jee-mvcMarzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvcabderrahim marzouk
133 visualizações25 slides
Hibernate por
HibernateHibernate
HibernateMaher Megadmini
4.4K visualizações36 slides
Support programmation orientée objet c# .net version f8 por
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8ENSET, Université Hassan II Casablanca
42.3K visualizações198 slides
Les Streams de Java 8 por
Les Streams de Java 8Les Streams de Java 8
Les Streams de Java 8Antoine Rey
14.6K visualizações11 slides

Mais procurados(18)

Hibernate por Ghazouani Mahdi
HibernateHibernate
Hibernate
Ghazouani Mahdi4.6K visualizações
Jpa Spring Hibernate por zaheryamak
Jpa Spring HibernateJpa Spring Hibernate
Jpa Spring Hibernate
zaheryamak2.6K visualizações
Marzouk architecture encouches-jee-mvc por abderrahim marzouk
Marzouk architecture encouches-jee-mvcMarzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvc
abderrahim marzouk133 visualizações
Hibernate por Maher Megadmini
HibernateHibernate
Hibernate
Maher Megadmini4.4K visualizações
Les Streams de Java 8 por Antoine Rey
Les Streams de Java 8Les Streams de Java 8
Les Streams de Java 8
Antoine Rey14.6K visualizações
JNDI Java Naming Derectory Interfaces por benouini rachid
JNDI Java Naming Derectory InterfacesJNDI Java Naming Derectory Interfaces
JNDI Java Naming Derectory Interfaces
benouini rachid1.6K visualizações
575 por Aly OMARA
575575
575
Aly OMARA301 visualizações
JDBC / JPA / Hibernate: Sans maîtrise la puissance n’est rien! por bleporini
JDBC / JPA / Hibernate: Sans maîtrise la puissance n’est rien!JDBC / JPA / Hibernate: Sans maîtrise la puissance n’est rien!
JDBC / JPA / Hibernate: Sans maîtrise la puissance n’est rien!
bleporini1.4K visualizações
Objet Direct Formation JPA Hibernate por formationobjetdirect
Objet Direct Formation JPA HibernateObjet Direct Formation JPA Hibernate
Objet Direct Formation JPA Hibernate
formationobjetdirect1.3K visualizações
Chapitre 4 persistance des donnees por Amir Souissi
Chapitre 4  persistance des donneesChapitre 4  persistance des donnees
Chapitre 4 persistance des donnees
Amir Souissi275 visualizações
Jdbc par4 por Karim Amane
Jdbc par4Jdbc par4
Jdbc par4
Karim Amane298 visualizações
Springioc por Salim Hamidi
SpringiocSpringioc
Springioc
Salim Hamidi708 visualizações
Ch06 por yarsenv47
Ch06Ch06
Ch06
yarsenv47389 visualizações
Présentation nouveauté java7 por Cynapsys It Hotspot
Présentation nouveauté java7Présentation nouveauté java7
Présentation nouveauté java7
Cynapsys It Hotspot1.1K visualizações

Similar a Jdbc

Java Database Connectivity por
Java Database ConnectivityJava Database Connectivity
Java Database ConnectivityKorteby Farouk
1.4K visualizações42 slides
Introduction jdbc por
Introduction  jdbcIntroduction  jdbc
Introduction jdbcKarim Amane
558 visualizações20 slides
Workshop spring session 2 - La persistance au sein des applications Java por
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
10.4K visualizações22 slides
Java et bases de données : JDBC por
Java et bases de données : JDBCJava et bases de données : JDBC
Java et bases de données : JDBCMohammed Jaafar
647 visualizações24 slides
Java 5, un blian por
Java 5, un blianJava 5, un blian
Java 5, un bliantareq
546 visualizações25 slides
Java 5, un bilan por
Java 5,  un bilanJava 5,  un bilan
Java 5, un bilanteejug
742 visualizações25 slides

Similar a Jdbc(20)

Java Database Connectivity por Korteby Farouk
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
Korteby Farouk1.4K visualizações
Introduction jdbc por Karim Amane
Introduction  jdbcIntroduction  jdbc
Introduction jdbc
Karim Amane558 visualizações
Workshop spring session 2 - La persistance au sein des applications Java por Antoine Rey
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
Antoine Rey10.4K visualizações
Java et bases de données : JDBC por Mohammed Jaafar
Java et bases de données : JDBCJava et bases de données : JDBC
Java et bases de données : JDBC
Mohammed Jaafar647 visualizações
Java 5, un blian por tareq
Java 5, un blianJava 5, un blian
Java 5, un blian
tareq546 visualizações
Java 5, un bilan por teejug
Java 5,  un bilanJava 5,  un bilan
Java 5, un bilan
teejug742 visualizações
2- Configuration des référentiels ODI 11 por samr
2- Configuration des référentiels ODI 112- Configuration des référentiels ODI 11
2- Configuration des référentiels ODI 11
samr 314 visualizações
Introduction à spring boot por Antoine Rey
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
Antoine Rey17.8K visualizações
PréSentation Qualoo Le Generateur De Code Java J2 Ee por ST informatique services
PréSentation Qualoo   Le Generateur De Code Java J2 EePréSentation Qualoo   Le Generateur De Code Java J2 Ee
PréSentation Qualoo Le Generateur De Code Java J2 Ee
ST informatique services1.6K visualizações
#5 Java EE5 Client Lourd et Smart Client por Guillaume Sauthier
#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 Sauthier1K visualizações
GWT : under the hood por svuillet
GWT : under the hoodGWT : under the hood
GWT : under the hood
svuillet4.5K visualizações
Procédures CLR pour SQL Server : avantages et inconvénients por Denis Voituron
Procédures CLR pour SQL Server : avantages et inconvénientsProcédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénients
Denis Voituron855 visualizações
Formation jpa-hibernate-spring-data por Lhouceine OUHAMZA
Formation jpa-hibernate-spring-dataFormation jpa-hibernate-spring-data
Formation jpa-hibernate-spring-data
Lhouceine OUHAMZA330 visualizações
Activity por dido
ActivityActivity
Activity
dido174 visualizações
Php mysql cours por zan
Php mysql coursPhp mysql cours
Php mysql cours
zan1.9K visualizações
Java version 11 - les 9 nouveautes por Abdenour Bouateli
Java version 11 -  les 9 nouveautesJava version 11 -  les 9 nouveautes
Java version 11 - les 9 nouveautes
Abdenour Bouateli118 visualizações
Java dans Windows Azure, l'exemple de JOnAS por Guillaume Sauthier
Java dans Windows Azure, l'exemple de JOnASJava dans Windows Azure, l'exemple de JOnAS
Java dans Windows Azure, l'exemple de JOnAS
Guillaume Sauthier1.3K visualizações

Último

Caprinov2023 2023, une amélioration de la situation, des prix de vente à prés... por
Caprinov2023 2023, une amélioration de la situation, des prix de vente à prés...Caprinov2023 2023, une amélioration de la situation, des prix de vente à prés...
Caprinov2023 2023, une amélioration de la situation, des prix de vente à prés...Institut de l'Elevage - Idele
19 visualizações32 slides
Caprinov2023 Distribution quotidienne des fourrages quelles stratégies pour ... por
Caprinov2023 Distribution quotidienne des fourrages  quelles stratégies pour ...Caprinov2023 Distribution quotidienne des fourrages  quelles stratégies pour ...
Caprinov2023 Distribution quotidienne des fourrages quelles stratégies pour ...Institut de l'Elevage - Idele
14 visualizações25 slides
Caprinov2023 Quand l’eau ne coule plus de source. Une démarche pour sécuriser... por
Caprinov2023 Quand l’eau ne coule plus de source. Une démarche pour sécuriser...Caprinov2023 Quand l’eau ne coule plus de source. Une démarche pour sécuriser...
Caprinov2023 Quand l’eau ne coule plus de source. Une démarche pour sécuriser...Institut de l'Elevage - Idele
40 visualizações22 slides
Caprinov2023 Reconquête de l’engraissement du chevreau à la ferme comment en... por
Caprinov2023 Reconquête de l’engraissement du chevreau à la ferme  comment en...Caprinov2023 Reconquête de l’engraissement du chevreau à la ferme  comment en...
Caprinov2023 Reconquête de l’engraissement du chevreau à la ferme comment en...Institut de l'Elevage - Idele
24 visualizações50 slides
GAV2023 - Quel cheptel et quels leviers de décarbonation la filière met en pl... por
GAV2023 - Quel cheptel et quels leviers de décarbonation la filière met en pl...GAV2023 - Quel cheptel et quels leviers de décarbonation la filière met en pl...
GAV2023 - Quel cheptel et quels leviers de décarbonation la filière met en pl...Institut de l'Elevage - Idele
129 visualizações17 slides
Caprinov2023 Ruminal por
Caprinov2023 RuminalCaprinov2023 Ruminal
Caprinov2023 RuminalInstitut de l'Elevage - Idele
20 visualizações22 slides

Último(20)

Caprinov2023 2023, une amélioration de la situation, des prix de vente à prés... por Institut de l'Elevage - Idele
Caprinov2023 2023, une amélioration de la situation, des prix de vente à prés...Caprinov2023 2023, une amélioration de la situation, des prix de vente à prés...
Caprinov2023 2023, une amélioration de la situation, des prix de vente à prés...
Institut de l'Elevage - Idele19 visualizações
Caprinov2023 Distribution quotidienne des fourrages quelles stratégies pour ... por Institut de l'Elevage - Idele
Caprinov2023 Distribution quotidienne des fourrages  quelles stratégies pour ...Caprinov2023 Distribution quotidienne des fourrages  quelles stratégies pour ...
Caprinov2023 Distribution quotidienne des fourrages quelles stratégies pour ...
Institut de l'Elevage - Idele14 visualizações
Caprinov2023 Quand l’eau ne coule plus de source. Une démarche pour sécuriser... por Institut de l'Elevage - Idele
Caprinov2023 Quand l’eau ne coule plus de source. Une démarche pour sécuriser...Caprinov2023 Quand l’eau ne coule plus de source. Une démarche pour sécuriser...
Caprinov2023 Quand l’eau ne coule plus de source. Une démarche pour sécuriser...
Institut de l'Elevage - Idele40 visualizações
Caprinov2023 Reconquête de l’engraissement du chevreau à la ferme comment en... por Institut de l'Elevage - Idele
Caprinov2023 Reconquête de l’engraissement du chevreau à la ferme  comment en...Caprinov2023 Reconquête de l’engraissement du chevreau à la ferme  comment en...
Caprinov2023 Reconquête de l’engraissement du chevreau à la ferme comment en...
Institut de l'Elevage - Idele24 visualizações
GAV2023 - Quel cheptel et quels leviers de décarbonation la filière met en pl... por Institut de l'Elevage - Idele
GAV2023 - Quel cheptel et quels leviers de décarbonation la filière met en pl...GAV2023 - Quel cheptel et quels leviers de décarbonation la filière met en pl...
GAV2023 - Quel cheptel et quels leviers de décarbonation la filière met en pl...
Institut de l'Elevage - Idele129 visualizações
GAV2023 - L’albédo (α) des prairies : un levier d'atténuation du changement c... por Institut de l'Elevage - Idele
GAV2023 - L’albédo (α) des prairies : un levier d'atténuation du changement c...GAV2023 - L’albédo (α) des prairies : un levier d'atténuation du changement c...
GAV2023 - L’albédo (α) des prairies : un levier d'atténuation du changement c...
Institut de l'Elevage - Idele106 visualizações
Caprinov2023 Réussite à l’IA des chèvres : effet de la diversité des trajecto... por Institut de l'Elevage - Idele
Caprinov2023 Réussite à l’IA des chèvres : effet de la diversité des trajecto...Caprinov2023 Réussite à l’IA des chèvres : effet de la diversité des trajecto...
Caprinov2023 Réussite à l’IA des chèvres : effet de la diversité des trajecto...
Institut de l'Elevage - Idele42 visualizações
GAV2023 - Evaluer pour gérer le bien-être en élevage bovin viande : outils di... por Institut de l'Elevage - Idele
GAV2023 - Evaluer pour gérer le bien-être en élevage bovin viande : outils di...GAV2023 - Evaluer pour gérer le bien-être en élevage bovin viande : outils di...
GAV2023 - Evaluer pour gérer le bien-être en élevage bovin viande : outils di...
Institut de l'Elevage - Idele103 visualizações
GAV2023 - Entre inflation et décapitalisation, une conjoncture mouvementée por Institut de l'Elevage - Idele
GAV2023 - Entre inflation et décapitalisation, une conjoncture mouvementéeGAV2023 - Entre inflation et décapitalisation, une conjoncture mouvementée
GAV2023 - Entre inflation et décapitalisation, une conjoncture mouvementée
Institut de l'Elevage - Idele258 visualizações
Caprinov2023 Réussite à l’IA des chèvres : effet de la diversité des trajecto... por Institut de l'Elevage - Idele
Caprinov2023 Réussite à l’IA des chèvres : effet de la diversité des trajecto...Caprinov2023 Réussite à l’IA des chèvres : effet de la diversité des trajecto...
Caprinov2023 Réussite à l’IA des chèvres : effet de la diversité des trajecto...
Institut de l'Elevage - Idele38 visualizações
NOTES MECANIQUE SSAID MEHDI.pptx por mohamedsaid315568
NOTES MECANIQUE SSAID MEHDI.pptxNOTES MECANIQUE SSAID MEHDI.pptx
NOTES MECANIQUE SSAID MEHDI.pptx
mohamedsaid3155685 visualizações
BeBop : l’apport des vidéos pour analyser le comportement des taurillons por Institut de l'Elevage - Idele
BeBop : l’apport des vidéos pour analyser le comportement des taurillonsBeBop : l’apport des vidéos pour analyser le comportement des taurillons
BeBop : l’apport des vidéos pour analyser le comportement des taurillons
Institut de l'Elevage - Idele12 visualizações
GAV2023 - La filière bovins viande face aux imports - Point sur les accords d... por Institut de l'Elevage - Idele
GAV2023 - La filière bovins viande face aux imports - Point sur les accords d...GAV2023 - La filière bovins viande face aux imports - Point sur les accords d...
GAV2023 - La filière bovins viande face aux imports - Point sur les accords d...
Institut de l'Elevage - Idele121 visualizações
GAV2023 - Diversité et transformation de l'élevage bovin allaitant français. ... por Institut de l'Elevage - Idele
GAV2023 - Diversité et transformation de l'élevage bovin allaitant français. ...GAV2023 - Diversité et transformation de l'élevage bovin allaitant français. ...
GAV2023 - Diversité et transformation de l'élevage bovin allaitant français. ...
Institut de l'Elevage - Idele139 visualizações
Caprinov2023 Un nouveau guide pour l’élevage des chevrettes, un nouvel outil ... por Institut de l'Elevage - Idele
Caprinov2023 Un nouveau guide pour l’élevage des chevrettes, un nouvel outil ...Caprinov2023 Un nouveau guide pour l’élevage des chevrettes, un nouvel outil ...
Caprinov2023 Un nouveau guide pour l’élevage des chevrettes, un nouvel outil ...
Institut de l'Elevage - Idele23 visualizações
GAV2023 - Méthane 2030 - Une démarche collective française à destination de t... por Institut de l'Elevage - Idele
GAV2023 - Méthane 2030 - Une démarche collective française à destination de t...GAV2023 - Méthane 2030 - Une démarche collective française à destination de t...
GAV2023 - Méthane 2030 - Une démarche collective française à destination de t...
Institut de l'Elevage - Idele115 visualizações
GAV2023 - Quelles perspectives de production de viandes bovines selon les dyn... por Institut de l'Elevage - Idele
GAV2023 - Quelles perspectives de production de viandes bovines selon les dyn...GAV2023 - Quelles perspectives de production de viandes bovines selon les dyn...
GAV2023 - Quelles perspectives de production de viandes bovines selon les dyn...
Institut de l'Elevage - Idele124 visualizações
GAV2023 - Les systèmes bovins viande à l'épreuve des défis : les dynamiques d... por Institut de l'Elevage - Idele
GAV2023 - Les systèmes bovins viande à l'épreuve des défis : les dynamiques d...GAV2023 - Les systèmes bovins viande à l'épreuve des défis : les dynamiques d...
GAV2023 - Les systèmes bovins viande à l'épreuve des défis : les dynamiques d...
Institut de l'Elevage - Idele120 visualizações
GAV2023 - Un outil pour centraliser les auto-contrôles des abattoirs et ateli... por Institut de l'Elevage - Idele
GAV2023 - Un outil pour centraliser les auto-contrôles des abattoirs et ateli...GAV2023 - Un outil pour centraliser les auto-contrôles des abattoirs et ateli...
GAV2023 - Un outil pour centraliser les auto-contrôles des abattoirs et ateli...
Institut de l'Elevage - Idele96 visualizações

Jdbc

  • 1. Cours Bases de donn´ees 2`eme ann´ee IUT Cours 6 : JDBC : ou comment lier ORACLE avec Java 1`ere partie Anne Vilnat http://www.limsi.fr/Individu/anne/cours
  • 2. Plan 1 Introduction 2 les ´etapes de la connexion Mise en place du pilote Nommer la base de donn´ees Etablir la connexion Dialogue avec la base de donn´ees Deconnexion
  • 3. Introduction : le probl`eme BDAppli Java ? Usage JDBC pour ex´ecuter, depuis un programme Java, l’ensemble des ordres SQL reconnus par la base de donn´ees cible. La base de donn´ees doit reconnaˆıtre le langage ANSI SQL-2.
  • 4. Introduction : JDBC BD APIJDBC Appli Java ? D´efinition JDBC (Java DataBase Connectivity) est une API (Application Programming Interface) qui permet d’ex´ecuter des instructions SQL. JDBC fait partie du JDK (Java Development Kit). Paquetage java.sql : import java.sql.*;
  • 5. Introduction : Gestion du pilote BDAPIJDBCAppli Java ? JDBCDriverManager Le pilote... Il va ´etablir le lien avec la base de donn´ees, en sachant “lui parler”. Dans JDBC : des classes charg´ees de g´erer un pilote... Pilote “r´ecent” : en Java Des pilotes existent pour mySQL, postGresSQL, ACCESS,...
  • 6. Introduction : Driver Manager BDAPIJDBCAppli Java JDBCDriverManager DriverProtocolenatif Java Appels SQL La connexion... Elle peut s’´etablir SI on donne l’adresse de la BD `a laquelle se connecter...
  • 7. Les classes et interfaces du package java.sql PreparedStatement CallableStatement Data Types prepareCall sous−classe Entrées de PS executeQuery sous−classe getXXX executeQuery getMoreResults/getResultSet Entrées/Sorties de CS prepareStatement Connexion Statement ResultSet createStatement executeQuery
  • 8. Etapes Fonctionnement Etapes d’un programme utilisant JDBC : 1 mettre en place le pilote ou driver. 2 ´etablir une connexion avec une source de donn´ees. 3 effectuer les requˆetes. 4 utiliser les donn´ees obtenues pour des affichages, des traitements statistiques, etc. 5 mettre `a jour les informations de la source des donn´ees. 6 terminer la connexion. 7 ´eventuellement, recommencer en 1.
  • 9. Les ´etapes... exemples 1 charger un pilote driver Class.forName(“oracle.jdbc.driver.OracleDriver”); 2 cr´eer un objet Connection Connection.maConnection=DriverManager.getConnection(url); url : String contenant l’adresse de la base de donn´ees 3 cr´eer un objet Statement Statement.maRequeteSQL=maConnection(); 4 envoyer la requˆete et r´ecup´erer le r´esultat dans un ResultSet ResultSet.monResultat= maRequeteSQL.executeQuery(texteRequeteSQL); texteRequeteSQL : String contenant le texte de la requˆete, par exemple : “SELECT * FROM Client”
  • 10. Mise en place du pilote 2 m´ethodes : Chargement statique enregistrer le ou les drivers(s) `a utiliser `a chaque connexion, passer comme argument l’url correspondante utiliser l’interface java.sql.Driver : ´ecrire une classe Driver, pour cr´eer une instance d’elle-mˆeme et l’enregistrer avec la m´ethode DriverManager.registerDriver() pas la plus simple, ni la plus usit´ee...
  • 11. Mise en place du pilote Chargement dynamique A la demande, sans noter explicitement le nom des classes : try { Class.forName(“oracle.jdbc.driver.OracleDriver”); } catch (Exception e){ System.out.println(”Impossible de charger le driver”); return; } Des pilotes existent pour mySQL, postGresSQL, ACCESS,...
  • 12. Nommage des bases de donn´ees D´eriv´ee des url d’internet. Sch´ema g´en´eral jdbc:<sous-protocole>:<compl´ements> jdbc = protocole sous-protocole : pour distinguer le type de pilote jdbc oracle:thin `a l’IUT complements : la base de donn´ees. Syntaxe : login/motDePasse@ordinateur:port:base. Exemple : toto/mdpToto@orasrv1.ens.iut-orsay.fr:1521:etudom
  • 13. Connexion par la m´ethode getConnection de DriverManager : Exemple import java.net.*; import java.sql.*; String url= ”jdbc:oracle:thin:toto/mdpToto@r2d2.iut-orsay.u- psud.fr:1521:etudom”; try { Class.forName(“oracle.jdbc.driver.OracleDriver”); } catch (Exception e){ System.out.println(”Impossible de charger le driver”); return; Connection maConnexion=DriverManager.getConnection(url); }
  • 14. Connexion ou en utilisant les objets DataSource Exemple import java.sql.*; import oracle.jdbc.pool.*; public class TestDataSource { public static void main(String args[]) throws ClassNotFoundException, SQLException { OracleDataSource ds = new OracleDataSource(); ds.setDriverType(’thin”); ds.setServerName’(“r2d2”); ds.setPortNumber(1521); ds.setDataBaseName(“etudom”); ds.setUser(“toto”); ds.setPassword(“mdpToto”); Connection maConnexion=DriverManager.getConnection(url); }
  • 15. Les tuyaux sont en place... BD APIJDBC Appli Java JDBCDriverManager DriverProtocolenatif Java Appels SQL
  • 16. Rappel : les classes et interfaces du package java.sql PreparedStatement CallableStatement Data Types prepareCall sous−classe Entrées de PS executeQuery sous−classe getXXX executeQuery getMoreResults/getResultSet Entrées/Sorties de CS prepareStatement Connexion Statement ResultSet createStatement executeQuery
  • 17. Pour dialoguer : Statement Exemple Statement monInstruction = maConnexion.createStatement(); suivant l’instruction SQL Instructions SQL M´ethode Type retourn´e Valeur retourn´ee SELECT executeQuery ResultSet Lignes de r´esultat UPDATE, executeUpdate int Nb lignes INSERT,DELETE modifi´ees Autres execute boolean Faux si erreur
  • 18. Consultation et r´ecup´eration de donn´ees Exemple ResultSet monR´esultat = monInstruction.executeQuery( “SELECT login, nomClient FROM toto.Client”); ResultsSet et ses m´ethodes R´esultat dans un ResultSet Parcours analogue `a celui d’un curseur avec la m´ethode next, et acc`es aux colonnes avec getXXX Exemple de parcours while (monResultat.next()) { String nom = monResultat.getString(“nomClient”); int login=monResultat.getInt (“login”); // traitement des donn´ees r´ecup´er´ees }
  • 19. Consultation et r´ecup´eration de donn´ees ResultsSet et ses m´ethodes Le premier next positionne sur la premi`ere ligne. Param`etres de getXXX : nom de l’attribut ou rang dans la requˆete (sous forme d’entier). Obligatoire pour les attributs calcul´es (MAX(...) ou quand les noms ne sont pas connus (SELECT *...) Exemple de parcours while (monResultat.next()) { String nom = monResultat.getString(2); int login=monResultat.getInt (1); // traitement des donn´ees r´ecup´er´ees }
  • 20. Les correspondances de types Type SQL Type Java CHAR, VARCHAR2, String NUMERIC, DECIMAL java.math.BigDecimal BIT boolean TINYINT byte SMALLINT short INTEGER int BIGINT long REAL float FLOAT, DOUBLE double BINARY, VARBINARY, LONGVARBINARY byte [ ] DATE java.sql.Date TIME java.sql.Time TIMESTAMP java.sql.Timestamp
  • 21. Les valeurs NULL Probl`eme : reconnaˆıtre dans Java le cas d’une valeur NULL. Conventions : Pour les m´ethodes getString(), getObject(), getDate(), ... : Null Java (il existe) Pour les m´ethodes getInt(), getByte(), getShort(), ... : la valeur 0 est renvoy´ee Pour la m´ethode getBoolean(), la valeur Faux est renvoy´ee. MAIS pas correct pour reconnaˆıtre des valeurs non renseign´ees dans la base... D’o`u la m´ethode wasNull() de ResultSet. Fonctionnement : lire la donn´ee, tester avec wasNull() si elle vaut NULL au sens SQL
  • 22. Acc`es et mise `a jour Pour INSERT, DELETE et UPDATE... La classe Statement a : executeUpdate() Elle retourne un int qui contient le nombre de lignes affect´ees par l’instruction. Exemple int nbLignes = monInstruction.executeUpdate( “INSERT INTO toto.Client(login, nomClient) VALUES (“ + numero + “,” + nom + “)”); System.out.println(nbLignes + “ ligne(s) ins´er´ee(s)”) ;
  • 23. Modification de la d´efinition des donn´ees Pour modifier la structure de la base La classe Statement a : execute(ordreSQL) L’ordre SQL correspond `a la chaˆıne de caract`eres contenant l’ordre `a ´ex´ecuter Elle retourne un boolean qui est vrai si il n’y a pas eu d’erreur `a l’´ex´ecution..
  • 24. D´econnexion Lib´erer ResultSet et Statement, fermer la Connection Exemple monResultat.close() ; monInstruction.close() ; maConnexion.close() ;