La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Interface Java – Oracle : JDBC. I-2 JDBC (Java DataBase Connectivity) : interface API (Application Programming Interface) qui permet d’exécuter des ordres.

Présentations similaires


Présentation au sujet: "Interface Java – Oracle : JDBC. I-2 JDBC (Java DataBase Connectivity) : interface API (Application Programming Interface) qui permet d’exécuter des ordres."— Transcription de la présentation:

1 Interface Java – Oracle : JDBC

2 I-2 JDBC (Java DataBase Connectivity) : interface API (Application Programming Interface) qui permet d’exécuter des ordres SQL dans un programme écrit en Java. Le programme est assimilé à un utilisateur Le programme est assimilé à un utilisateur virtuel qui se connecte, émet des requêtes virtuel qui se connecte, émet des requêtes SQL, récupère les résultats SQL, récupère les résultats avant de se déconnecter. avant de se déconnecter. JDBC (Java DataBase Connectivity) : interface API (Application Programming Interface) qui permet d’exécuter des ordres SQL dans un programme écrit en Java. Le programme est assimilé à un utilisateur Le programme est assimilé à un utilisateur virtuel qui se connecte, émet des requêtes virtuel qui se connecte, émet des requêtes SQL, récupère les résultats SQL, récupère les résultats avant de se déconnecter. avant de se déconnecter.

3 I-3 CLASSES À IMPORTER Package java.sql Package java.sql import java.sql.*; Package java.sql Package java.sql import java.sql.*;

4 I-4 CONNEXION À ORACLE  par l’intermédiaire de JDBC en utilisant une URL (Universal Resource Locator) Exemple : "jdbc:oracle:thin:@iutdoua-oracle.univ-lyon1.fr:1521:orcl" Exemple : "jdbc:oracle:thin:@iutdoua-oracle.univ-lyon1.fr:1521:orcl"

5 I-5 ÉTABLISSEMENT D’UNE CONNEXION 1. Déclaration et chargement du driver : Exemple : DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); 1. Déclaration et chargement du driver : Exemple : DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); public static void registerDriver(Driver driver) throws SQLException 1ère méthode de la classe DriverManager

6 I-6 ÉTABLISSEMENT D’UNE CONNEXION (SUITE) 2. Connexion à une base locale en utilisant l’URL, le nom de l’utilisateur, son mot de passe. Exemple : Connection conn = DriverManager.getConnection "jdbc:oracle:thin:@iutdoua-oracle.univ-lyon1.fr:1521:orcl", ("jdbc:oracle:thin:@iutdoua-oracle.univ-lyon1.fr:1521:orcl", "nom_utilisateur","######"); "nom_utilisateur","######"); if (conn != null) System.out.println("Connexion etablie"); if (conn != null) System.out.println("Connexion etablie"); 2. Connexion à une base locale en utilisant l’URL, le nom de l’utilisateur, son mot de passe. Exemple : Connection conn = DriverManager.getConnection "jdbc:oracle:thin:@iutdoua-oracle.univ-lyon1.fr:1521:orcl", ("jdbc:oracle:thin:@iutdoua-oracle.univ-lyon1.fr:1521:orcl", "nom_utilisateur","######"); "nom_utilisateur","######"); if (conn != null) System.out.println("Connexion etablie"); if (conn != null) System.out.println("Connexion etablie"); public static Connection getConnection(String url, String user, String password) throws SQLException 2ème méthode de la classe DriverManager

7 I-7 3.Accès à la base : requêtes SQL …. 4.Fermeture de la connexion : conn.close() 3.Accès à la base : requêtes SQL …. 4.Fermeture de la connexion : conn.close()

8 I-8 ACCÈS À LA BASE EN CONSULTATION Création d'une référence sur un objet de type Statement Création d'une référence sur un objet de type Statement pour mémoriser l’ordre SQL select à envoyer au SGBD. pour mémoriser l’ordre SQL select à envoyer au SGBD.  Méthode public Statement createStatement() Création d'une référence sur un objet de type ResultSet Création d'une référence sur un objet de type ResultSet qui recevra le résultat de l’exécution de la requête.  Méthode public ResultSet executeQuery(String sql) Création d'une référence sur un objet de type Statement Création d'une référence sur un objet de type Statement pour mémoriser l’ordre SQL select à envoyer au SGBD. pour mémoriser l’ordre SQL select à envoyer au SGBD.  Méthode public Statement createStatement() Création d'une référence sur un objet de type ResultSet Création d'une référence sur un objet de type ResultSet qui recevra le résultat de l’exécution de la requête.  Méthode public ResultSet executeQuery(String sql) Statement requete = conn.createStatement(); conn.createStatement(); Statement requete = conn.createStatement(); conn.createStatement(); ResultSet ensresul = requete.executeQuery("requête SQL select …");

9 I-9 EXPLOITATION DES RÉSULTATS  Méthode public boolean next() while ( ensresul.next() ) { …… …… String nom = ensresul.getString(1); String nom = ensresul.getString(1); …}….requete.close();ensresul.close();conn.close();  Méthode public boolean next() while ( ensresul.next() ) { …… …… String nom = ensresul.getString(1); String nom = ensresul.getString(1); …}….requete.close();ensresul.close();conn.close(); public String getString(int columnIndex)

10 I-10 EXEMPLE import java.sql.*; import java.lang.Class.*; class JdbcTest { public static void main ( String [] args ) throws SQLException public static void main ( String [] args ) throws SQLException { // Chargement du driver // Chargement du driver DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); // Connexion à une base locale // Connexion à une base locale Connection conn = Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@iutdoua- oracle.univ-lyon1.fr:1521:orcl","nom-utilisateur", "########"); DriverManager.getConnection("jdbc:oracle:thin:@iutdoua- oracle.univ-lyon1.fr:1521:orcl","nom-utilisateur", "########"); import java.sql.*; import java.lang.Class.*; class JdbcTest { public static void main ( String [] args ) throws SQLException public static void main ( String [] args ) throws SQLException { // Chargement du driver // Chargement du driver DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); // Connexion à une base locale // Connexion à une base locale Connection conn = Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@iutdoua- oracle.univ-lyon1.fr:1521:orcl","nom-utilisateur", "########"); DriverManager.getConnection("jdbc:oracle:thin:@iutdoua- oracle.univ-lyon1.fr:1521:orcl","nom-utilisateur", "########");

11 I-11 // Création de ref sur les objets requete et ensresul Statement requete = conn.createStatement( ); Statement requete = conn.createStatement( ); ResultSet ensresul = requete.executeQuery( ResultSet ensresul = requete.executeQuery( "selectename from emp");//à écrire sur une ligne "selectename from emp");//à écrire sur une ligne // Affichage des noms des employés while ( ensresul.next()) while ( ensresul.next()) System.out.println( ensresul.getString(1)); System.out.println( ensresul.getString(1)); // Déconnexion requete.close(); requete.close(); ensresul.close(); ensresul.close(); conn.close(); conn.close(); }} // Création de ref sur les objets requete et ensresul Statement requete = conn.createStatement( ); Statement requete = conn.createStatement( ); ResultSet ensresul = requete.executeQuery( ResultSet ensresul = requete.executeQuery( "selectename from emp");//à écrire sur une ligne "selectename from emp");//à écrire sur une ligne // Affichage des noms des employés while ( ensresul.next()) while ( ensresul.next()) System.out.println( ensresul.getString(1)); System.out.println( ensresul.getString(1)); // Déconnexion requete.close(); requete.close(); ensresul.close(); ensresul.close(); conn.close(); conn.close(); }} public String getString(int columnIndex)

12 I-12 ACCÈS POUR UN ORDRE DDL OU UN ORDRE DML  Statement requete = conn.createStatement();  Méthode public Statement createStatement() Statement requete = conn.createStatement();  Méthode public int executeUpdate(String sql) Valeur retournée : 0 pour un ordre DDL create (ou nombre de tuples créés), 0 pour drop table, le nombre de lignes traitées pour un ordre DML (insert, update, delete).  Statement requete = conn.createStatement();  Méthode public Statement createStatement() Statement requete = conn.createStatement();  Méthode public int executeUpdate(String sql) Valeur retournée : 0 pour un ordre DDL create (ou nombre de tuples créés), 0 pour drop table, le nombre de lignes traitées pour un ordre DML (insert, update, delete). int nomVariableResultat = requete.executeUpdate("requête SQL …"); Statement requete = nomConnexion.createStatement(); nomConnexion.createStatement(); Statement requete = nomConnexion.createStatement(); nomConnexion.createStatement();

13 I-13 EXEMPLE import java.sql.*; import java.lang.Class.*; public class Tp2 { public static void main(String[] args) throws SQLException { DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@iutdoua- oracle.univ-lyon1.fr:1521:orcl","nom-utilisateur","#######"); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@iutdoua- oracle.univ-lyon1.fr:1521:orcl","nom-utilisateur","#######"); Statement requete1 = conn.createStatement(); Statement requete1 = conn.createStatement(); int r1 = requete1.executeUpdate("drop table emp"); int r1 = requete1.executeUpdate("drop table emp"); System.out.println("suppression de la table;statut : "+r1); System.out.println("suppression de la table;statut : "+r1); Statement requete2 = conn.createStatement(); Statement requete2 = conn.createStatement(); int r2 = requete2.executeUpdate( int r2 = requete2.executeUpdate( "create table emp as select * from scott.emp"); "create table emp as select * from scott.emp"); System.out.println("creation de la table;statut : " +r2); System.out.println("creation de la table;statut : " +r2); import java.sql.*; import java.lang.Class.*; public class Tp2 { public static void main(String[] args) throws SQLException { DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@iutdoua- oracle.univ-lyon1.fr:1521:orcl","nom-utilisateur","#######"); Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@iutdoua- oracle.univ-lyon1.fr:1521:orcl","nom-utilisateur","#######"); Statement requete1 = conn.createStatement(); Statement requete1 = conn.createStatement(); int r1 = requete1.executeUpdate("drop table emp"); int r1 = requete1.executeUpdate("drop table emp"); System.out.println("suppression de la table;statut : "+r1); System.out.println("suppression de la table;statut : "+r1); Statement requete2 = conn.createStatement(); Statement requete2 = conn.createStatement(); int r2 = requete2.executeUpdate( int r2 = requete2.executeUpdate( "create table emp as select * from scott.emp"); "create table emp as select * from scott.emp"); System.out.println("creation de la table;statut : " +r2); System.out.println("creation de la table;statut : " +r2);

14 I-14 // Pour calculer la moyenne des salaires des employés // ayant le même travail que l'employé n° 7369 // Pour calculer la moyenne des salaires des employés // ayant le même travail que l'employé n° 7369 Statement requete3 = conn.createStatement(); Statement requete3 = conn.createStatement(); ResultSet ensresul = requete3.executeQuery( ResultSet ensresul = requete3.executeQuery( "select avg(sal)from emp where job=(select job from emp where empno=7369)"); while (ensresul.next()) while (ensresul.next()) System.out.println(ensresul.getFloat(1)); System.out.println(ensresul.getFloat(1)); //Pour mettre à jour le salaire de l’employé 7369 : // (sal < moy_sal_m_job ? moy_sal_m_job : sal * 1.1) //Pour mettre à jour le salaire de l’employé 7369 : // (sal < moy_sal_m_job ? moy_sal_m_job : sal * 1.1) Statement requete4 = conn.createStatement(); Statement requete4 = conn.createStatement(); int r4 = requete4.executeUpdate( int r4 = requete4.executeUpdate( "update emp e set sal = (select decode(least(e.sal,avg(sal)),e.sal,avg(sal),e.sal*1. 1) from emp where job=e.job) where empno=7369"); System.out.println("nombre de lignes mises a jour:"+ r4); System.out.println("nombre de lignes mises a jour:"+ r4); // Pour calculer la moyenne des salaires des employés // ayant le même travail que l'employé n° 7369 // Pour calculer la moyenne des salaires des employés // ayant le même travail que l'employé n° 7369 Statement requete3 = conn.createStatement(); Statement requete3 = conn.createStatement(); ResultSet ensresul = requete3.executeQuery( ResultSet ensresul = requete3.executeQuery( "select avg(sal)from emp where job=(select job from emp where empno=7369)"); while (ensresul.next()) while (ensresul.next()) System.out.println(ensresul.getFloat(1)); System.out.println(ensresul.getFloat(1)); //Pour mettre à jour le salaire de l’employé 7369 : // (sal < moy_sal_m_job ? moy_sal_m_job : sal * 1.1) //Pour mettre à jour le salaire de l’employé 7369 : // (sal < moy_sal_m_job ? moy_sal_m_job : sal * 1.1) Statement requete4 = conn.createStatement(); Statement requete4 = conn.createStatement(); int r4 = requete4.executeUpdate( int r4 = requete4.executeUpdate( "update emp e set sal = (select decode(least(e.sal,avg(sal)),e.sal,avg(sal),e.sal*1. 1) from emp where job=e.job) where empno=7369"); System.out.println("nombre de lignes mises a jour:"+ r4); System.out.println("nombre de lignes mises a jour:"+ r4);

15 I-15 // déconnexion // déconnexion requete1.close(); requete1.close(); requete2.close(); requete2.close(); requete3.close(); requete3.close(); requete4.close(); requete4.close(); ensresul.close(); ensresul.close(); conn.close(); conn.close(); } } // fin classe Tp2 // déconnexion // déconnexion requete1.close(); requete1.close(); requete2.close(); requete2.close(); requete3.close(); requete3.close(); requete4.close(); requete4.close(); ensresul.close(); ensresul.close(); conn.close(); conn.close(); } } // fin classe Tp2

16 I-16 Exécution : suppression de la table;statut : 0 creation de la table;statut : 14 1105.75 nombre de lignes mises a jour : 1 Appuyez sur une touche pour continuer... Exécution : suppression de la table;statut : 0 creation de la table;statut : 14 1105.75 nombre de lignes mises a jour : 1 Appuyez sur une touche pour continuer...

17 I-17 ORDRES SQL DYNAMIQUES Requête paramétrée :  Utilisation de la méthode  public PreparedStatement prepareStatement(  String sql)  et  Du caractère "?" pour représenter une valeur d’une variable Requête paramétrée :  Utilisation de la méthode  public PreparedStatement prepareStatement(  String sql)  et  Du caractère "?" pour représenter une valeur d’une variable PreparedStatement requetevar = conn.prepareStatement("ordre sql contenant des ? ");

18 I-18 ORDRES SQL DYNAMIQUES (suite) Renseignement des variables :  Méthode set XXX, avec XXX type de la variable ( String, Int, Float, Double, …) Exemple : Exemple : Renseignement des variables :  Méthode set XXX, avec XXX type de la variable ( String, Int, Float, Double, …) Exemple : Exemple : requetevar.setXXX(rang, valeur); public void setFloat(int parameterIndex, float x) (rang : position du paramètre dans l’ordre SQL).

19 I-19 EXEMPLE import java.sql.*; import java.lang.Class.*; class OrdreDyna { public static void main (String args []) throws SQLException public static void main (String args []) throws SQLException { DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); // Connexion à une base locale // Connexion à une base locale Connection conn = DriverManager.getConnection( Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@iutdoua-oracle.univ- lyon1.fr:1521:orcl", "jdbc:oracle:thin:@iutdoua-oracle.univ- lyon1.fr:1521:orcl", "nom-utilisateur","######"); "nom-utilisateur","######"); // création d'une table // création d'une table Statement reqcr = conn.createStatement(); Statement reqcr = conn.createStatement(); int r = reqcr.executeUpdate("create table adherent(numad number(4) primary key, nom varchar2(14))"); int r = reqcr.executeUpdate("create table adherent(numad number(4) primary key, nom varchar2(14))"); System.out.println("creation de la table;statut:"+r); System.out.println("creation de la table;statut:"+r); import java.sql.*; import java.lang.Class.*; class OrdreDyna { public static void main (String args []) throws SQLException public static void main (String args []) throws SQLException { DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); // Connexion à une base locale // Connexion à une base locale Connection conn = DriverManager.getConnection( Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@iutdoua-oracle.univ- lyon1.fr:1521:orcl", "jdbc:oracle:thin:@iutdoua-oracle.univ- lyon1.fr:1521:orcl", "nom-utilisateur","######"); "nom-utilisateur","######"); // création d'une table // création d'une table Statement reqcr = conn.createStatement(); Statement reqcr = conn.createStatement(); int r = reqcr.executeUpdate("create table adherent(numad number(4) primary key, nom varchar2(14))"); int r = reqcr.executeUpdate("create table adherent(numad number(4) primary key, nom varchar2(14))"); System.out.println("creation de la table;statut:"+r); System.out.println("creation de la table;statut:"+r);

20 I-20 // insertion d'une ligne( ou tuple ) PreparedStatement reqins=conn.prepareStatement( PreparedStatement reqins=conn.prepareStatement( "insert into adherent values ( ?, ?)" ); "insert into adherent values ( ?, ?)" ); // renseignement des variables String nomLu = "dupont"; //ou lecture au clavier String nomLu = "dupont"; //ou lecture au clavier reqins.setInt( 1, 123 ); reqins.setInt( 1, 123 ); reqins.setString( 2, nomLu ); reqins.setString( 2, nomLu ); // insertion de la ligne reqins.executeUpdate( ); // sans argument reqins.executeUpdate( ); // sans argument // lecture de la table pour vérification Statement reqcons = conn.createStatement(); Statement reqcons = conn.createStatement(); ResultSet ensresul = reqcons.executeQuery( ResultSet ensresul = reqcons.executeQuery( "select * from adherent"); // sur une même ligne while ( ensresul.next( ) ) while ( ensresul.next( ) ) { System.out.println( ensresul.getInt(1) ); System.out.println( ensresul.getInt(1) ); System.out.println( ensresul.getString(2) ); System.out.println( ensresul.getString(2) );} // insertion d'une ligne( ou tuple ) PreparedStatement reqins=conn.prepareStatement( PreparedStatement reqins=conn.prepareStatement( "insert into adherent values ( ?, ?)" ); "insert into adherent values ( ?, ?)" ); // renseignement des variables String nomLu = "dupont"; //ou lecture au clavier String nomLu = "dupont"; //ou lecture au clavier reqins.setInt( 1, 123 ); reqins.setInt( 1, 123 ); reqins.setString( 2, nomLu ); reqins.setString( 2, nomLu ); // insertion de la ligne reqins.executeUpdate( ); // sans argument reqins.executeUpdate( ); // sans argument // lecture de la table pour vérification Statement reqcons = conn.createStatement(); Statement reqcons = conn.createStatement(); ResultSet ensresul = reqcons.executeQuery( ResultSet ensresul = reqcons.executeQuery( "select * from adherent"); // sur une même ligne while ( ensresul.next( ) ) while ( ensresul.next( ) ) { System.out.println( ensresul.getInt(1) ); System.out.println( ensresul.getInt(1) ); System.out.println( ensresul.getString(2) ); System.out.println( ensresul.getString(2) );}

21 I-21 // Déconnexion // Déconnexion reqcr.close(); reqcr.close(); reqins.close(); reqins.close(); reqcons.close(); reqcons.close(); ensresul.close(); ensresul.close(); conn.close(); conn.close(); }}Exécution creation de la table;statut : 0 123dupont Appuyez sur une touche pour continuer... // Déconnexion // Déconnexion reqcr.close(); reqcr.close(); reqins.close(); reqins.close(); reqcons.close(); reqcons.close(); ensresul.close(); ensresul.close(); conn.close(); conn.close(); }}Exécution creation de la table;statut : 0 123dupont Appuyez sur une touche pour continuer...


Télécharger ppt "Interface Java – Oracle : JDBC. I-2 JDBC (Java DataBase Connectivity) : interface API (Application Programming Interface) qui permet d’exécuter des ordres."

Présentations similaires


Annonces Google