Masters IIGLI et ILGII – Intranet internet extranet – 2006-2007 – Claude Montacié 1 Cours n° 10 Accès distant aux bases de données.

Slides:



Advertisements
Présentations similaires
Présentation de frameworks J2EE
Advertisements

Cours n° 1 Introduction à la programmation
Réaliser en Java un programme client d’une Base de Données
Cours n° 2 Les entrées-sorties Biliothèque C++ (iostream) –
Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 8 Langage HTML.
Introduction Fonctionnement PluginsConfigurationLes données Le framework MAG Framework de conception de canaux complexes Implémente IChannel Possède son.
Mise en œuvre de l’informatique décisionnelle
MySQL I / Présentation. II / Administration et Outils.
Exposé de Système - Informatique et Réseau
(Classes prédéfinies – API Java)
Les technologies XML Cours 3 : Les APIS XML Janvier Version 1.0 -
51 Les technologies XML Cours 6 : XML et les architectures N-tiers – Tier Métier Janvier Version 1.0 -
Les Bases de données et le Web
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
Stéphane Frenot - Département Télécommunication - SID - II - Jdbc 280 JDBC Java Databases Connectivity.

PHP mySQL Extension php_mysql. Connexion à une base de données Établir une connexion mysql_connect(string server, string username, string password) –permet.
UV JDBC Module Java Expert
Programmation dapplications Bases de données avec Java INT.

Jérôme CUTRONA PHP PDO Jérôme CUTRONA 01:08:01 Programmation Web
JDBC: manipuler une base de données en Java IFT6800 – E 2007 Jian-Yun Nie.
Connexion base de données
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
Techniques Internet de Base Licence 2 (Info, Maths, PC/PA) Université Jean Monnet Ruggero G. PENSA
HIBERNATE Framework de mapping objet-relationnel
UNIVERSITE CHOUAIB DOUKKALI Département des mathématiques
Middleware : XML-DBMS Permet de faire office d’interface entre des données XML et des bases de données relationnelles (insertion et récupération de données)
JDBC Java Data Base Connectivity. Java DataBase Connectivity (JDBC) Cette API est développée par Sun en collaboration avec les grands éditeurs de SGBD.
1 Développement des Applications des Bases de Données Chapitre 6.
Connexion en mode application. Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre.
JDBC ou comment manipuler une base de données en Java ?
Les instructions PHP pour l'accès à une base de données MySql
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
Gestion des bases de données
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
1 Développement des Applications des Bases de Données Chapitre 6.
1 CSI 2532 Lab5 Installation de JDBC Février 13, 2012.
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Développement des Applications des Bases de Données Chapitre 6.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
‘‘Open Data base Connectivity‘‘
PHP & My SQL.
Programmation Internet en PHP SIL module M12
Juin 2006~ Brigitte Groléas ~ 1 J530 (JBD) Java : Base de Données.
Content Management System CMS. Pourquoi ? Obligation de ressaisir des contenus publiés à plusieurs endroits Pas d’outils de gestion de qualité de l’information.
Développement d’application client/serveur
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Les systèmes de gestion de base de données (SGBD)
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
 Requêtes MySQL en PHP Introduction
Jérôme CUTRONA PHP PDO Jérôme CUTRONA 07:21:24 Programmation Web
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Les sockets.
1 INF7115-Base de données Présentation La persistance avec JDO Kerlyne FOSTINE Figaro LUC.
Schéma de conception Factory Method Exemple Sylvain Giroux.
Le Langage SQL Introduction. 2 Historique du Langage SQL E. F. CODD : premiers articles dans les années 70 IBM crée le langage SEQUEL (Structured English.
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
Conception de Programmes - IUT de Paris - 1ère année Cours 2 – Références et passage de paramètres Les Références –Introduction aux références.
Module 1 : Vue d'ensemble de Microsoft SQL Server
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
JDBC - p. 1 JDBC. JDBC - p. 2 Objectifs Fournir un accès homogène aux SGBDR Abstraction des SGBDR cibles Requêtes SQL Simple à mettre en oeuvre Core API.
02/06/2015© Robert Godin. Tous droits réservés.1 5 Interface entre SQL et un programme n SQL incomplet n Défaut d'impédance (impedance mismatch) – modèle.
Interface Java – Oracle : JDBC. I-2 JDBC (Java DataBase Connectivity) : interface API (Application Programming Interface) qui permet d’exécuter des ordres.
JDBC Présenter par: Mouctar Souleymane Bah Enseignent: Dr Amer Draâ
JDBC (Complément de cours) IFT 3030
L. Gurret – M. Herve – P. Mignon – J. Prarioz. Introduction  Dernière étape d’analyse  Cahier des charges, spécifications et conception orientée objet.
JDBC - Y. Bekkers1 Java et les SGBDR Librairies JDBC Yves Bekkers.
Transcription de la présentation:

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 10 Accès distant aux bases de données

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 2 1.Bases de données distantes  Java DataBase Connectivity (JDBC)  Serveur d’application Sommaire

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 3 INTRODUCTION INTRODUCTION Bibliographie Bibliographie George Reese, JDBC et Java Guide du programmeur, O’Reilly, 2001 Donald Balès, JDBC Pocket Reference, O’Reilly, 2003 Daniel Serain, Le middleware: Concepts et technologies, Masson, 1997

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 4 1.1JAVA DATABASE CONNECTIVITY (JDBC) Définition API Java permettant la connexion avec les bases de données relationnelles (SGBDR) Ensemble de classes et d’interfaces permettant l’utilisation sur le réseau d’un ou plusieurs SGBDR à partir d’un programme Java Interface distante uniforme permettant un accès homogène aux SGBD simple à mettre en œuvre indépendant de la SGBD cible supportant les fonctionnalités de base du langage SQL-2 possibilité de plusieurs interfaces simultanément Portabilité sur de nombreux O.S. et sur de nombreuses SGBDR (Oracle, Informix, Sybase, Mysql, Postgres,..) Liberté totale vis a vis des constructeurs

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 5 1.1JAVA DATABASE CONNECTIVITY (JDBC) API JDBC Paquetage « java.sql » 10 interfaces définissant les objets nécessaires à la connexion à une base éloigné et à la création et exécution de requêtes SQL Gestion des pilotes Driver Gestion de la connexion Connection Organisation des tables de données DatabaseMetaData,ParameterMetaData, ResultSetMetaData Gestion des requêtes Statement, PreparedStatement, StatementCallableStatement Résultats des requêtes ResultSet Mises à jour des tables de données Savepoint

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 6 1.1JAVA DATABASE CONNECTIVITY (JDBC) Pilote JDBC Utilisation d’un composant logiciel spécifique à chaque base de données Pilote (driver) Conversion des requêtes JDBC dans le langage natif du SGBDR Pilotes JDBC pour tous les principaux constructeurs Oracle, Sybase, Informix, DB2,... 4 Types de de pilote Type I : Pont JDBC-ODBC traduction en requête ODBC (windows), librairie en C (pas d’applet) Type II : API natives du SGBD (non java) traduction en requêtes spécifiques, librairie en C/C++ (pas d’applet) Type III : API réseau générique en java (applet) Type IV : API réseau du SGBD en java (applet) Référence de tous les pilotes

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 7 Driver ODBC driver pont JDBC-ODBC driver JDBC pour Oracle Driver réseau JDBC driver JDBC pour Sybase JDBC DriverManager Java Appli/Applet Oracle API JDBC API Driver JDBC Protocole Propriétaire Protocole JDBC Sybase OracleSybase 1.1JAVA DATABASE CONNECTIVITY (JDBC) Protocoles

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 8 1.1JAVA DATABASE CONNECTIVITY (JDBC) Schéma de mise en œuvre d’une requête Chargement du(des) pilote JDBC pour le SGBDR Class.forName(Nom de la classe contenant le pilote).newInstance(); Pilote de type IV pour la base de données Mysql "com.mysql.jdbc.Driver" Etablissement de la connexion à la base de données DriverManager.getConnection(..) Création d’un descripteur de requêtes Connexion.createStatement() Exécution de la requête et traitement des données retournées ResultSet Statement.executeQuery() Fermeture des différents espaces Statement.close() Connexion.close()

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 9 1.1JAVA DATABASE CONNECTIVITY (JDBC) Classe DriverManager Connexion à une base de données static Connection getConnection(String url) static Connection getConnection(String url, String user, String password) static Connection getConnection(String url, Properties info) Lancement d’une SQLException en cas d’erreur URL de connexion Accès à la base via un URL de la forme : jdbc: : ;param=valeur,... spécifiant l’utilisation de JDBC le driver ou le type de SGBDR l’identification de la base locale ou distante avec des paramètres de configuration éventuels (nom utilisateur, mot de passe, …) Exemples : String url = "jdbc:odbc:maBase" ; String url = "jdbc:msql://leo.paris4.sorbonne.fr:3306:maBase";

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié JAVA DATABASE CONNECTIVITY (JDBC) 1.1JAVA DATABASE CONNECTIVITY (JDBC) Connexion à une base de données Mysql Connexion à une base de données Mysql testConnexion.java try { Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch (Exception ex) { System.out.println("Erreur de chargement du pilote"); System.exit(0); } try { String url = "jdbc:mysql:// :3306/Ilgii1"; Properties props = new Properties(); props.setProperty("user","ilgii1"); props.setProperty("password","milgii1"); Connection connection=DriverManager.getConnection(url, props); System.out.println ("Connexion à la base de donnees"); } catch (SQLException ex) { System.out.println("Erreur de connexion"+ex); System.exit(0); } Connexion à la base de donnees

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié JAVA DATABASE CONNECTIVITY (JDBC) Classe Connexion Accès aux descripteurs de la base de données DatabaseMetaData getMetaData() Création d’un descripteur de requêtes Statement createStatement() descripteur de requête simple PreparedStatement prepareStatement(String sql) descripteur de requête précompilée CallableStatement prepareCall(String sql) descripteur de requête stockée dans le SBDBR Gestion des mises à jour void commit() Validation d’un groupe de transaction, commit par défaut après chaque ordre SQL (passage en mode manuel avec la méthode setAutoCommit) void rollback() void rollback(Savepoint savepoint) Restauration de l’état de la base à un état précédent

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié JAVA DATABASE CONNECTIVITY (JDBC) 1.1JAVA DATABASE CONNECTIVITY (JDBC) Lecture des métadonnées d’une base de données Lecture des métadonnées d’une base de données testMetaData.java DatabaseMetaData meta=con.getMetaData(); System.out.println ("Lecture et Affichage des metadata "); System.out.print(" Database: "+meta.getDatabaseProductName()); System.out.println(".Version "+meta.getDatabaseProductVersion()); System.out.println(" User Name: "+meta.getUserName()); ResultSet tables = meta.getTables(con.getCatalog(),null,"%",null); // affichage des informations while(tables.next()){ for(int i=0; i<tables.getMetaData().getColumnCount();i++){ String nomColonne = tables.getMetaData().getColumnName(i+1); Object valeurColonne = tables.getObject(i+1); System.out.println(nomColonne+" = "+valeurColonne); } } Database: MySQL.Version community-nt User Name: TABLE_CAT = Ilgii1 TABLE_NAME = personne TABLE_TYPE = TABLE

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié JAVA DATABASE CONNECTIVITY (JDBC) Type de requêtes SQL Classe Statement Descripteur de requêtes interprétées à chaque exécution Classe PreparedStatement Précompilée et paramétrable Préparée pour être exécutée plusieurs fois Gérée par le programme Java Classe CallableStatement Procédure stockée dans le SGBDR et paramétrable Ecriture dans le langage interne du SGBDR SQL Server Transac-SQL Gérée par le SGBDR + Augmentation des performances - Langage propriétaire

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié JAVA DATABASE CONNECTIVITY (JDBC) Classe Statement (descripteur de requêtes SQL) Exécution de requêtes SQL boolean execute(String sql) Envoi d’une requête SQL ne renvoyant pas de résultat int executeUpdate(String sql) Envoi d’une requête SQL de type INSERT, UPDATE, or DELETE ResultSet executeQuery(String sql) Envoi d’une requête SQL renvoyant un résultat (type SELECT, …). int[] executeBatch() Envoi d’une liste de Requêtes SQL ne renvoyant pas de résultat void addBatch(String sql) Ajout d’une requête SQL à la liste ResultSet getResultSet()Accès au résultat de la dernière requête void close()Fermeture du descripteur

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 15 Type JDBCType JavaAccesseurs CHAR VARCHAR String getString() FLOAT DOUBLE double getDouble() REAL float getFloat() BIT boolean getBoolean() BIGINT long getLong() SMALLINT short getShort() TINYINT byte getByte() INTEGER int getInt() NUMERIC DECIMAL java.math.BigDecimal getBigDecimal() DATE java.sql.Date getDate() TIMESTAMP java.sql.TimeStamp getTimeStamp() TIME java.sql.Time getTime() 1.1JAVA DATABASE CONNECTIVITY (JDBC) Correspondance des types

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié JAVA DATABASE CONNECTIVITY (JDBC) 1.1JAVA DATABASE CONNECTIVITY (JDBC) Création et destruction d’une table de données Création et destruction d’une table de données testCréationTable.java // création du descripteur de requête Statement req = con.createStatement(); // création de la table de données personne String tb1 = "personne (Nom CHAR (20), Masculin BIT, Age TINYINT);"; req.execute("create table " + tb1); // création de la table de données vente String tb2 = "vente (Montant NUMERIC, date DATE);"; req.execute("create table " + tb2); // destruction de la table de données vente req.execute("drop table vente"); Chargement du pilote Connexion à la base données Création de la table personne (Nom CHAR (20), Masculin BIT, Age TINYINT); Création de la table vente (Montant NUMERIC, date DATE); Destruction de la table vente (Montant NUMERIC, date DATE); Fermeture de connexion à la base données

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié JAVA DATABASE CONNECTIVITY (JDBC) Classe PreparedStatement (requête SQL précompilée) Envoi d’une requête sans paramètres à la base de données Plus rapide qu’un descripteur de requête classique (Statement) une seule analyse par le SGBDR Arguments dynamiques spécifiés par un « ? » Connection.prepareStatement(« insert ? ? ») Spécification des paramètres Positionnement des paramètres par les 26 méthodes setXXX() Exemple : void setByte(int parameterIndex, byte x) au moins 2 arguments : numéro relatif de l’argument dans la requête, valeur à positionner Envoi de la requête complétée Mêmes méthodes que pour la classe Statement (sans paramètres)

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié JAVA DATABASE CONNECTIVITY (JDBC) 1.1JAVA DATABASE CONNECTIVITY (JDBC) Insertion d’un élément avec une requête précompilée Insertion d’un élément avec une requête précompilée testInsert.java String[] nom = {"Chirac", "Villepin", "Sarkozy", "Alliot-Marie"}; boolean[] masculin = {true, true, true, false}; byte[] age = {70, 65, 55, 50}; // création de la requête précompilée preq = con.prepareStatement("insert into personne values (?, ?, ?)"); for (int i = 0;i < nom.length;i++) { preq.setString(1, nom[i]); preq.setBoolean(2, masculin[i]); preq.setByte(3, age[i]); // envoi de la requête preq.executeUpdate(); } preq.close(); Chargement du pilote Connexion à la base données

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié JAVA DATABASE CONNECTIVITY (JDBC) Classe ResultSet Méthodes d’accès à un tuple boolean next() retourne false si dernier tuple lu, true sinon avancement du curseur sur le tuple suivant boolean previous() retourne false si premier tuple lu, true sinon avancement du curseur sur le tuple précédent boolean absolute(int row), boolean first(), boolean last(), Accès direct à un tuple boolean relative(int row) Accès relatif à un tuple par rapport à la position courante Accès aux champs xxx getXXX(int) et xxx getXXX(String) pour les valeurs des champs Exemple : byte getByte(int columnIndex), byte getByte(String columnName) ResultSetMetaData getMetaData() pour les types de données

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié JAVA DATABASE CONNECTIVITY (JDBC) 1.1JAVA DATABASE CONNECTIVITY (JDBC) Consultation d’une base de données Consultation d’une base de données testConsultation.java Statement req = con.createStatement(); ResultSet res = req.executeQuery("SELECT Nom, Age FROM personne ;"); while (res.next()) { String nom = res.getString("Nom"); byte age = res.getByte("Age"); System.out.println("L'age de "+nom+" est : " + age); } req.close(); Chargement du pilote Connexion à la base données L'age de Chirac est : 70 L'age de Villepin est : 65 L'age de Sarkozy est : 55 L'age de Alliot-Marie est : 50 Fermeture de connexion à la base données

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 21 Application ou Applet JDBCJDBC Client BD Serveur TCP / Protocole propriétaire SGBD 1.2SERVEUR D’APPLICATION Architecture 2-tiers

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié SERVEUR D’APPLICATION Architecture 2-tiers Principe Page web contenant une applet (ou programme Jaca) envoyant des requêtes au SGBDR à l’aide de l’API JDBC Avantages Très simple à mettre en œuvre Bon choix pour des applications clientes peu évoluées, à livrer rapidement et n’exigeant que peu de maintenance Inconvénients Dépendance forte entre le programme client (applet ou programme java) et la structure du SGBDR Modification de tous les programmes clients en cas de changement Tout le traitement du côté client (pas de gestion de la concurrence)

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 23 Application ou Applet Client BD Serveur TCP / RMI / CORBA Middleware JDBC SGBD 1.2SERVEUR D’APPLICATION Architecture 3-tiers

Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié SERVEUR D’APPLICATION Architecture 3-tiers Principes Pas de liaison directe entre le programme client et le SGBDR Echange par un programme tiers : Serveur middleware réception des demandes du programme client transmission sous forme de requêtes au SGBDR Programme tiers souvent écrit en Java sous forme de servlet Avantages Ajout d’un niveau de sécurité et gestion de la concurrence Possibilité de plusieurs méthodes de transmission entre le client et le middleware sockets, RMI Java, CORBA, … Plus de nécessité d’un serveur web et du SGBDR sur la même machine duplication de bases de données Inconvénients Solution professionnelle plus difficile à mettre en oeuvre