Cours Bases de données 2ème année IUT



Documents pareils
Introduction à JDBC. Accès aux bases de données en Java

Java DataBaseConnectivity

TP Programmation Java / JDBC / Oracle

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Accès aux bases de données

Programmation d application Bases de données avec Java

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Cours Bases de données 2ème année IUT

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

1. Langage de programmation Java

Java - MySQL. Code: java-mysql

JDBC le langage Java XVI-1 JMF

OpenPaaS Le réseau social d'entreprise

Java Database Connectivity (JDBC) - Langage SQL

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Paradox 9. Guide de l utilisateur jpdox Web Utilities

Java et les bases de données

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

JDBC JDBC. Java DataBase Connectivity

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Exploitation de bases de données relationnelles et orientées objet IFT287

Application web de gestion de comptes en banques

[BASE DE DONNEES MULTIMEDIA]

Bases de données avancées

Notes de cours : bases de données distribuées et repliquées

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Gestion de base de données

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Dialogue avec la base de données

Devoir Data WareHouse

Panorama des Bases de Données

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Connectivité aux bases de données Java (JDBC)

MySQL avec Mac OS X. Quelques manipulations avec le terminal sont nécessaires si une version de MySQL est déjà lancée:

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

A QUOI SERVENT LES BASES DE DONNÉES?

Dis papa, c est quoi un bus logiciel réparti?

Compte-rendu de projet de Système de gestion de base de données

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Construire une base de donnée pour bibliothèque

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

TP Bases de données réparties

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

TP Contraintes - Triggers

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Chapitre 5 : Les procédures stockées PL/SQL

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

Gestion distribuée (par sockets) de banque en Java

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Création d un service web avec NetBeans 5.5 et SJAS 9

Plan du cours. Historique du langage Nouveautés de Java 7

//////////////////////////////////////////////////////////////////// Administration bases de données

Création d une application JEE

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Thierry Déléris. BMC Mainview Data Server Synthèse & Mise en œuvre

Applet pour visualiser les variables «automate» notifiées

TD3: tableaux avancées, première classe et chaînes

Corrigés détaillés des exercices

Plan. Accès aux données dans le framework.net. ADO.NET Entity Framework LINQ ADO.NET ADO.NET. 1. ADO.NET Mode connecté Mode non connecté

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

4. Groupement d objets

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Programmer en JAVA. par Tama

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Configurer la supervision pour une base MS SQL Server Viadéis Services

PROJET 1 : BASE DE DONNÉES REPARTIES

CREATION WEB DYNAMIQUE

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

PROGRAMMATION PAR OBJETS

FileMaker 10. Guide ODBC et JDBC

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

PL langage de programmation côté serveur. SQL à la base : types, expressions, requêtes

SQL Historique

Auto-évaluation Programmation en Java

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

Solutions du chapitre 4

Présentation Windows Azure Hadoop Big Data - BI

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Premiers Pas en Programmation Objet : les Classes et les Objets

Une introduction à Java

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Hala Skaf-Molli. Nancy-Université 14 mai 2007

Définition des Webservices Ordre de paiement par . Version 1.0

CATALOGUE FORMATIONS DOMAINE Bases de données

Programmation Par Objets

Arbres binaires de recherche

Tutoriel d installation de Hibernate avec Eclipse

BTS/CGO P10 SYSTEME INFORMATION Année

Transcription:

Cours Bases de données 2ème année IUT Cours 8 : JDBC : ou comment lier ORACLE avec Java 3ème partie Anne Vilnat http://www.limsi.fr/individu/anne/cours

Plan 1 Appel aux procédures et aux fonctions stockées Principe Exemple 2 Les Exceptions 3 Conclusion

Procédures et fonctions stockées Connexion createstatement preparestatement preparecall Statement sous classe PreparedStatement sous classe CallableStatement executequery executequery Entrées de PS Data Types Entrées/Sorties de CS executequery getxxx getmoreresults/getresultset ResultSet

Appel aux procédures et aux fonctions stockées Motivation L interface CallableStatement permet d appeler des procédures ou des fonctions stockées. On indique le nom de la procédure ou de la fonction requise lors de l initialisation de l objet CallableStatement grâce à la méthode preparecall() de l interface Connection. Deux formes possibles, selon que la procédure ou la fonction stockée comporte des paramètres lors de l appel ou n en comporte pas

Appel aux procédures et aux fonctions stockées Comment? sans paramètre : CallableStatement cst = myconnexion preparecall ( call nom procedure ); avec des paramètres : CallableStatement cst = myconnexion preparecall (? = call nom fonction (?,?,... ) ); ou : CallableStatement cst = myconnexion preparecall ( call nom procedure (?,?,... ) ) ;

CallableStatement : Exemple Exemple d une fonction stockée On cherche le nombre d Individus portant le même nom CREATE FONCTION memenomfonc (nom Individu.nomIndividu%type) RETURN NUMBER IS nbindividus NUMBER; BEGIN SELECT COUNT(*) INTO nbindividus FROM individu WHERE nomindividu = nom GROUP BY nomindividu RETURN Individus; END;

Exemple d une fonction appelée Code Java memenomfonc (nom) >nbindividus Individu BD

Exemple appel à une fonction stockée Comment? CallableStatement cst = myconnexion preparecall ( (? = call memenomfonc (? ) ); Code Java?=call memenomfonc (?) memenomfonc (nom) cst >nbindividus Individu BD

Appel aux procédures et aux fonctions stockées : paramètres Paramètres en entrée Pour positionner les paramètres effectifs d entrée (IN ou IN OUT): setxxx(), avant le : execute() où XXX est un nom de type Java. Paramètres de gauche à droite dans l ordre d apparition dans l instruction SQL. setxxx() a deux paramètres : le rang du paramètre à positionner et la valeur transmise au paramètre de la fonction ou de la procédure.

CallableStatement : Exemple Exemple d une fonction stockée : les paramètres en entrée le nom en entrée : setstring cst.setstring (2, FONDA ); Code Java?=call memenomfonc (?) memenomfonc (nom) cst >nbindividus setstring (2, FONDA ) Individu BD

Appel aux procédures et aux fonctions stockées : paramètres (suite) Paramètres en sortie Paramètres de sortie (OUT ou IN OUT): récupérés après le execute(), par getxxx(), où XXX est un nom de type Java. getxxx() a un paramètre : le rang du paramètre à récupérer. Typage des paramètres Lorsqu une fonction ou une procédure stockée renvoie une valeur (valeur de retour, paramètre OUT ou paramètre IN OUT), JDBC exige d en spécifier le type: registeroutparameter() avant exécution de la procédure.

CallableStatement : Exemple Exemple d une fonction stockée : les paramètres en sortie typage du résultat : un NUMBER cst.registeroutparameter (1,java.sql.Types.NUMBER); Code Java?=call memenomfonc (?) memenomfonc (nom) cst >nbindividus setstring (2, FONDA ) Individu registeroutparameter( 1,java.sql.Types.NUMBER) BD

CallableStatement : Exemple Exemple d une fonction stockée : Exécution de la fonction! execute! boolean succes = cst.execute ( ); Code Java?=call memenomfonc (?) memenomfonc (nom) cst >nbindividus setstring (2, FONDA ) registeroutparameter( 1,java.sql.Types.NUMBER) Individu execute() BD

CallableStatement : Exemple Exemple d une fonction stockée : et on récupère le résultat int rnb = cst.getint (1); Code Java?=call memenomfonc (?) memenomfonc (nom) cst >nbindividus setstring (2, FONDA ) registeroutparameter( 1,java.sql.Types.NUMBER) Individu execute() getint(1) rnb BD

CallableStatement : Exemple Exemple d une fonction stockée : et on récapitule! CallableStatement cst = myconnexion preparecall (? = call memenomfonc (? ) ); cst.setstring (2, FONDA ); cst.registeroutparameter (1,java.sql.Types.NUMBER); boolean succes = cst.execute ( ); int rnb = cst.getint (1); cst.close ( );

CallableStatement : Exemple Exemple d une procédure stockée plus complexe Le nom, le prenom du réalisateur et le numfilm d un film... côté PLSQL On a une procédure DetailsFilm qui prend en paramètre : en entrée : le titre du film, en sortie : le numfilm, les nom et prénom du réalisateur CREATE PROCEDURE DetailsFilm ( titre IN Film.titre%type, nomreal OUT Individu.NomIndividu%type, prenomreal OUT Individu.PrenomIndividu%type, num OUT Film.NumFilm%type)

CallableStatement : Exemple Code jdbc CallableStatement cst = myconnexion preparecall ( call DetailsFilm (?,?,?,?) ); on établit le lien avec la procédure PL/SQL, et avec ses 4 paramètres...

CallableStatement : Exemple Code jdbc CallableStatement cst = myconnexion preparecall ( call DetailsFilm (?,?,?,?) ); cst.setstring (1, CHARLIE ET LA CHOCOLATERIE ); on donne le type et la valeur du paramètre en entrée (le titre)...

CallableStatement : Exemple Code jdbc CallableStatement cst = myconnexion preparecall ( call DetailsFilm (?,?,?,?) ); cst.setstring (1, CHARLIE ET LA CHOCOLATERIE ); cst.registeroutparameter (2,java.sql.Types.VARCHAR2); cst.registeroutparameter (3,java.sql.Types.VARCHAR2); cst.registeroutparameter (4,java.sql.Types.NUMBER); on donne le type des trois paramètres en sortie : nom, prénom et numfilm...

CallableStatement : Exemple Code jdbc CallableStatement cst = myconnexion preparecall ( call DetailsFilm (?,?,?,?) ); cst.setstring (1, CHARLIE ET LA CHOCOLATERIE ); cst.registeroutparameter (2,java.sql.Types.VARCHAR2); cst.registeroutparameter (3,java.sql.Types.VARCHAR2); cst.registeroutparameter (4,java.sql.Types.NUMBER); boolean succes = cst.execute ( ); on exécute la procédure, en vérifiant au besoin qu elle s est bien exécutée...

CallableStatement : Exemple Code jdbc CallableStatement cst = myconnexion preparecall ( call DetailsFilm (?,?,?,?) ); cst.setstring (1, CHARLIE ET LA CHOCOLATERIE ); cst.registeroutparameter (2,java.sql.Types.VARCHAR2); cst.registeroutparameter (3,java.sql.Types.VARCHAR2); cst.registeroutparameter (4,java.sql.Types.NUMBER); boolean succes = cst.execute ( ); String rnom = cst.getstring (2); String rprenom = cst.getstring (3); int rnumfilm = cst.getint (4); on récupère les valeurs calculées dans les variables...... cst.close ( );

La classe SQLException Méthodes java.sql.sqlexception hérite de java.sql.sqlexception. Parmi les méthodes définies dans java.lang.exception,: getsqlstate() qui renvoie la chaîne de caractères correspondant à SQLSTATE (le code d erreur de la norme SQL), geterrorcode() qui renvoie l entier correspondant au code d erreur vendeur (le code d erreur propre à l éditeur de la base de données, donc non normalisé), getnextexception() qui donne l exception qui suit l exception courante dans le chaînage des exceptions, setnextexception() qui permet d ajouter l exception passée en paramètre au chaînage des exceptions. Cette méthode n est normalement utilisée que par les développeurs de drivers.

La classe SQLException Exemple catch (SQLException ex) { System.out.println ( Capture une SQLException :); while (ex! = null) { System.out.print ( SQLSTATE: + ex.getsqlstate ( )); System.out.print ( Message: + ex.getmessage ( )); System.out.println ( Code d erreur vendeur: + ex.geterrorcode ( )); ex.printstacktrace (System.out) ex = ex.getnextexception ( ); System.out.println ( ); } }

Les classes et interfaces du package java.sql Connexion createstatement preparestatement preparecall Statement sous classe PreparedStatement sous classe CallableStatement executequery executequery Entrées de PS Data Types Entrées/Sorties de CS executequery getxxx getmoreresults/getresultset ResultSet

Bilan PL/SQL Quels ajouts des fonctions (stockées) des procédures (stockées) des paquetages pour regrouper des triggers pour de nouvelles formes de contrôle Quels avantages plus rapide plus efficace mieux structuré

Bilan JDBC Quelles possibilités? établir une connexion par le biais d un driver attacher des requêtes à des instructions (Statement) requêtes simples appel à des fonctions ou des procédures transmettre ces requêtes pour les faire exécuter sur le serveur récupérer les résultats dans des (ResultSet), ou dans des variables (appel à des fonctions ou à des procédures stockées) fermer la connexion

Comment choisir? Qui doit faire quoi? Faire les traitements sur le serveur (donc en PL/SQL) ou sur le client (donc en Java)? Règle générale : préférer les traitements en PL/SQL, surtout quand ils nécessitent des consultations multiples de la base pour limiter les transferts entre la base (serveur) et le client éventuellement distant pour profiter mieux des optimisations d Oracle pour profiter de l efficacité des fonctions/procédures stockées déjà compilées/optimisées en PL/SQL Mais profiter des plus grandes souplesses de Java pour gérer des structures de données complexes, des interfaces,...