JDBC : Interconnexion J / SQL ava / SQL JDBC JDBC Types de
Transcription
JDBC : Interconnexion J / SQL ava / SQL JDBC JDBC Types de
JDBC JDBC : Interconnexion J Java / SQL • Bibliothèques de classes (java.sql.* inclus dans le JDK 1.4 1 4 : JDBC 3.0) 3 0) • JDBC supporte le multi-thread • Support de SQL92 Entry Level Ch i i Soutou Christian S http://w3.univ-tlse2.fr/icare/soutou • Dri Drivers ers http://java.sun.com/products/jdbc/jdbc.drivers.html Christian Soutou - 2005 JDBC Types de Pilotes JDBC • Communication en mode client client-serveur serveur déconnecté : • Type 1 (JDBC-ODBC (JDBC ODBC Bridge) – Client épais – connexion à la base de données – émissions d’instructions SQL et exploitation des résultats provenant de la base de données – déconnexion de la base JDBC ODBC – Utilisation • Application Java mais pas Applet è implantation de JDBC • Test, 1ère • Base MS Access Classe Applet côté client ou Servlet, EJB (Enterprise Java Beans) Procédure cataloguée côté serveur Christian Soutou - 2005 Java • ODBC + Pilote ODBC du SGBD • Applicatif Java – – – – 2 ODBC BD 3 Christian Soutou - 2005 4 Types de Pilotes JDBC Types de Pilotes JDBC Java Java JDBC Driver Java 100% • Type 2 (Native-API (Native API Partly-Java Partly Java Driver) DriverBD – Client épais • Type 3 (Net Protocol All-Java All Java Driver) – Client léger • Pilote JDBC du SGBD • Librairies client du SGBD – Utilisation • Pilote JDBC + Driver générique DriverG java/natif – Utilisation • Multibases • Application Java ou Applets • Architectures 3 tiers DriverBD • Mieux que type 1 : code optimisé • Applications Java 2 tiers mais pas applet DriverBD BD Driver Oracle ... Driver Oracle BD Christian Soutou - 2005 5 Christian Soutou - 2005 L’API JDBC (java.sql) Types de Pilotes JDBC • Type 4 (Native Protocol All-Java All Java Driver) – Client léger Java • Pilote JDBC (300Ko pour Oracle thin) • Création de sockets pour émuler le protocole BD Driver 100% Java – Utilisation • Applets • Architectures 2 tiers Christian Soutou - 2005 6 BD Interface Classes Exceptions Interface-Classes-Exceptions Description Driver Pilote appelé par le Driver Manager Connection Session avec une BD Statement Exécution d’ordres SQL standard PreparedStatement Gestion des ordres SQL avec paramètres CallableStatement Gestion des appels de procédures stockées ResultSet Tableau de lignes g résultant d’un ordre DriverManager Envoie les demandes de connexion au driver SQLException Extension de java.lang.Exception, détail de l’erreur SQL … 7 Christian Soutou - 2005 8 Mécanismes de JDBC Variables d’environnement Données (NUMBER VARCHAR2...) • PATH : chemin de la machine virtuelle Java (en général installé dans C:\j2sdk1.4.0) SELECT, INSERT… Java Preparedstatement Connection • CLASSPATH : paquetage Oracle en fonction du pilote choisi h i i (OracleHome\jdbc\lib\paquetage (O l H \jdb \lib\ t ) Version du JDK utilisé JDK 11.1 1 JDK 1.2 et JDK 1.3 JDK 11.4 4 Statement B Base JDBC Paquetage JDBC Oracle classes111.jar l 111 j classes12.jar ojdbc14.jar jdb 14 j Christian Soutou - 2005 Statement • • • • Importation de paquetages (oracle.sql, …) Enregistrement du pilote Ouverture de connexion(s) (Connection) Création d’un état (Statement, PreparedStatement ou • • Gestion de ResultSet Fermeture des résultats, des états et connexions CallableStatement) 9 Christian Soutou - 2005 10 D t Source Data S N Name ODBC Enregistrement E it t du d pilote il t 1 (pont JDBC-ODBC) JDBC ODBC) try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); try {Connection cx = DriverManager.getConnection("jdbc:odbc:DSNBDAccess","",""); Statement etat = cx.createStatement (); ResultSet rset = etat.executeQuery("SELECT * FROM Avion"); … } catch(SQLException ex) { … } } catch (ClassNotFoundException ex) { … ); Christian Soutou - 2005 11 Christian Soutou - 2005 12 Enregistrement du d pilote 4 Oracle import oracle.jdbc.driver.*; … try { DriverManager.registerDriver ( (new oracle.jdbc.driver.OracleDriver()); l jdb d i O l D i ()) Connection cx = DriverManager.getConnection ("jdbc:oracle:thin:@telline.cict.fr:1526:etu923", "soutou", "mdp"); Statement etat = cx.createStatement (); … // Fermeture de la connexion cx close(); cx.close(); } catch(SQLException ex) { … } Christian Soutou - 2005 Description ResultSet R ltS t executeQuery(String) int executeUpdate(String) E é t un SELECT ett renvoie Exécute i un ensemble bl de d lignes li Exécute un ordre SQL LMD passé en paramètre et renvoie le nombre de lignes traitées boolean execute(String) Exécute un ordre SQL dynamique passé en paramètre et renvoie true si c’est un SELECT false si c’est un LMD void close() Description Statement createStatement() Création d’un objet destiné à recevoir un ordre SQL sans paramètre PreparedStatement prepareStatement(String) Précompile un ordre SQL avec paramètres CallableStatement prepareCall(String) Déclare l’appel d’une procédure cataloguée avec dd’éventuels éventuels paramètres void setAutoCommit(boolean) void commit() Positionne le commit automatique Valide la transaction void rollback() Invalide la transcation void close() Ferme la connexion Christian Soutou - 2005 14 Résumé de l’API JDBC Méthodes int getUpdateCount() Méthodes 13 Méthodes de Statement void setMaxRows(int) Méthodes de Connection Limite le nombre d’enregistrements à extraire par toute requête issue de cet état état. Nombre de lignes traitées par un ordre SQL dynamique ou –1 si c’est un SELECT Ferme l’état DriverManager getconnection Connection prepareCall createStatement Statement prepareStatement PreparedStatement CallableStatement setXXX executeQuery ResultSet getXXX tXXX Data Types getXXX Christian Soutou - 2005 15 Christian Soutou - 2005 16