Programmation dapplication INT. 2 Bases de Données Plan du document Contexteslide 1 Programmer avec une BDslide 2 Client-Serveur SQL et architecture 3.

Slides:



Advertisements
Présentations similaires
Produit Gammes Nomenclatures Modules Techniques Prix de Revient Prix de Vente Modules Techniques Client Marges Mise en route Temps Unitaire Prix (Ex:
Advertisements

Réaliser en Java un programme client d’une Base de Données
PL/SQL : Le Langage PL/SQL est une extension du SQL, qui offre
Les Systèmes de Gestion de Bases de Données (SGBD) PL-SQL.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
SQL - Subtilités.
Vues.
Stéphane Frenot - Département Télécommunication - SID - II - Jdbc 280 JDBC Java Databases Connectivity.
TP 3-4 BD21.
Programmation dapplications Bases de données avec Java INT.

Programme Introduction aux BD et aux SGBD Le modèle relationnel
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Développement d’applications web
Contrôles d'accès aux données
10 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux déclencheurs.
Connexion en mode application. Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre.
Ecole Supérieure Privée de ingénierie et de technologie année universitaire :2013/2014 Cross-Plateform Cours JavaScript.
L’utilisation des bases de données
Services fournis par le SI et technologies associées
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Gestion des erreurs Packages ©Alain Villeneuve, 1999
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
PLSQL ORACLE 8i Connecter VB à BD Oracle Les collections Question de révision Les blocs anonymes Les triggers REVISION Par : Joël Huot.
1 Développement des Applications des Bases de Données Chapitre 6.
SQL: Contraintes et Triggers
Bases de Données Avancées - TP2: SQL
Chapitre 9 Les sous-programmes.
COURS DE PROGRAMMATION ORIENTEE OBJET :
PL/SQL Noreddine GHERABI 1.
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.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Procédures Stockées Schedule: Timing Topic 60 minutes Lecture
2 Industrialisation des développements sur SQL Server avec Visual Studio 2010 Mardi 8 Février – 17h30 Karim Zegour – Winwise Michel Perfetti – MVP VS.
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
Introduction.
Heg Haute école de gestion de Neuchâtel Gestionnaire d'exception Procédures stockées PL/SQL.
 CREATE TABLE  DROP TABLE  ALTER TABLE  INSERT  UPDATE  DELETE  SELECT interrogation 2 Instruction de mise à jour structure.
Cours n°4M2. ESCE (S. Sidhom) Séminaire ( 6-12 Février 2007 ) Promo. M2 ESCE-Tunis 2006/07 Conception d’un système d'information sur Internet Architecture.
Le Langage de BLOC PL/SQL
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Créer des déclencheurs de base de données
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Créer des packages.
Packages fournis par Oracle
(Procedural Language / Structured Query Language)
6 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux packages.
1 Copyright © Oracle Corporation, Tous droits réservés. Présentation des sous-programmes PL/SQL.
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
Introduction  Langage propre à Oracle basé sur ADA  Offre une extension procédurale à SQL  PL/SQL permet d’utiliser un sous-ensemble du langage SQL.
Révision du langage PL/SQL
Initiation au web dynamique Licence Professionnelle.
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
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.
PL/SQL Présentation.
Le Langage de Contrôle de Données TRIGGERS
Note: Les nombres écrits en gras renvoie à des leçons entières. Symbole %FOUND 6-13 %ISOPEN 6-13 %NOTFOUND 6-13 %ROWCOUNT 6-13 %ROWTYPE 5, 6-17 %TYPE 1-20.
Interface Java – Oracle : JDBC. I-2 JDBC (Java DataBase Connectivity) : interface API (Application Programming Interface) qui permet d’exécuter des ordres.
Procédures Stockées Fonctions Paquetages
Les bases de données Séance 8 Jointures.
Nicolas Ribot Introduction aux triggers Nicolas Ribot - Licence GNU FDL - Version 1.1.
Introduction au langage PL/SQL
1 CEC A.-CHAVANNE Sites Web et bases de données. 2 UNE BASE DE DONNÉES : POURQUOI ? Manipulation de grandes quantités d’information – représentation des.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Transcription de la présentation:

Programmation dapplication INT

2 Bases de Données Plan du document Contexteslide 1 Programmer avec une BDslide 2 Client-Serveur SQL et architecture 3 rangs slide 13 JDBC slide 14 Serveurs dapplications et « portails » slide 19 PL/SQLslide 20

3 Bases de Données Contexte Limites du SQL interactif : absence de structure de contrôle absence de variable Pas de « calcul » sur les données Adopter un langage de type procédural SQL doit rester le seul langage d'accès aux données

4 Bases de Données Programmer avec une BD Générateurs dapplication sur BD : Interface au dessus LDD LMD But : productivité Programmation vISuelle (QBE, QBF, LV) L4G : –Maquettage décrans –Enchaînement des actions triggers –Scripts associés aux objets graphiques SQL + LPG (PL/SQL) AGL Programmer avec une BD

5 Bases de Données Interfaces SQL LPG Solutions : Embedded SQL dans un L3G SQL/CLI PSM (Persistent Stored Modules) Programmer avec une BD

6 Bases de Données Embedded SQL dans un L3G Précompilé, compilé Dépendant du SGBD cible Problèmes 2 systèmes de types, 2 styles de programmation « Impedance mismatch » == « dysfonctionnement » NUMBER(x)int?, long ? DECIMAL(x,y), NUMBER(x,y)float ?, double ? VARCHAR(x)char(x+1)?, String NULL ??? Programmer avec une BD

7 Bases de Données Embedded SQL Programme source (C+SQL) Précompilation Programme sourceRequêtes BD sans cde SQL compilationTraitement code objetLibrairies Plan d'exécution LinkageStockage programme exécutableBD Programmer avec une BD DD

8 Bases de Données SQL/CLI Bas niveau compilé uniquement syntaxe moins concISe Interface universelle SGBD SQL Indépendance / SGBD Imbrication « sans couture » du SQL dans langage hôte ODBC, JDBC Programmer avec une BD

9 Bases de Données Ordre SQL PSM Inconvénient des deux approches précédentes Impedance mismatch Code procédural du côté client coût réseau SQL « procédural » PL/SQL « Routines » SQL Triggers C/S 2ème génération Programmer avec une BD Client BEGIN FOR i = 1 to 4 SELECT END Serveur SQL BD

10 Bases de Données Architecture client/serveur SQL/CLI et Embedded SQL Procédure anonyme Procédure stockée Client Serveur SQL BD Moteur PL/SQL PL/SQL Client Serveur SQL BD Moteur PL/SQL RPC Proc stockée PL/SQL

11 Bases de Données Architecture client/serveur Triggers Client Serveur SQL BD Moteur PL/SQL Proc stockée PL/SQL SQL UPDATE delete INSERT

12 Bases de Données Interfaces SQL LPG Programmer avec une BD ApprocheJavaAutres langages Embedded SQLSQLJPro*C SQL/CLIJDBCODBC PSMPL/SQL

13 Bases de Données Client-Serveur SQL et architecture 3 rangs Terminal : navigateur C/S HTTP Frontal : Serveur + passerelle C/S SQL Dorsal : SGBD Client léger : navigateur http Serveur http Passerelle CGI SQL Serveur SQL Middleware http Middleware SQL Site 1 Site 2 Site 3

14 Bases de Données JDBC Reprise des idées de ODBC dans le monde Java Indépendance / SGBD cible Recours à des pilotes Code portable de bout en bout Pas forcément construit au dessus de ODBC Autres API peuvent être définies à partir de JDBC

15 Bases de Données Pilotes JDBC JDBC non supporté en natif par les SGBD du commerce Transformations des appels JDBC en appels natifs 4 catégories de pilotes en fonctions de : La présence ou non de pilote SGBD (non java) sur le client Protocole de communication entre le client Java et le serveur

16 Bases de Données Principes JDBC Connexion (se lie à un SGBD particulier avec un nom dutilISateur) Création de requête (statements) Exécution de requête (execute) Récupération des résultats (resultset et next()) Opérations transactionnelles (commit, abort)

17 Bases de Données 2-tiers JDBC Applet Java Navigateur HTML JDBC SGBD Protocole propriétaire SGBD Machine client IHM JDBC Machine serveur BD Oracle

18 Bases de Données 3-tiers JDBC Applet Java Navigateur HTML Serveur dapplication JDBC SGBD HTTP, RMI, appels IIOP - CORBA Protocole propriétaire SGBD Machine client IHM Machine serveur Business Logic Machine serveur BD Oracle

19 Bases de Données Serveurs dapplications et « portails » ReconnaISsant les utilisateurs : Multiplier les « cookies » Vues adaptatives construites au fur et à mesure des requêtes et parcours Intégrant de multiples applications « servlets » Intégrant de multiples sources de données « wrappers »

PL/SQL

21 Bases de Données Plan du document Introduction Option procédurale dOracle Objectifs Caractéristiques de PL/SQL Procédure anonyme PL/SQL par lexemple Curseur explicite Curseur « FOR » C+SQL avec PL/SQL Procédure PL/SQL Fonction PL/SQL Gestion des erreurs Package Manipulation des procédures Gestion des procédures Appel des procédures/fonctions Trigger

22 Bases de Données Option procédurale dOracle Extension de SQL Programming Language SQL Procédure stockées Procédures Fonctions Packages Triggers

23 Bases de Données Objectifs Partager le code applicatif niveau serveur Application cliente L3G (C, Java) Application cliente L4G (Developper 2000, …) Centraliser les règles de gestion Optimiser les performances Accroître la sécurité

24 Bases de Données Caractéristiques PL/SQL Types de données : BD + composites Structures de contrôle Modularité (bloc, procédure, fonction, package) Gestion des erreurs (exception) Interface BD intégrée (SQL, curseur) Calculs Volontairement décorrélé des pb dE/S

25 Bases de Données Procédure anonyme Syntaxe DECLAREdéclaration des variables locales BEGINsuite dinstructions PL/SQL EXCEPTIONsuite dinstructions PLSQL END; RUN;exécution de la procédure

26 Bases de Données Bloc avec curseur explicite DECLARE CURSOR c IS SELECT * FROM produits WHERE qte = 0; p produits%ROWTYPE; BEGIN OPEN c; LOOP FETCH c INTO p; EXIT WHEN c%NOTFOUND; INSERT INTO RupStock VALUES (SYSDATE, p.noprod); END LOOP; CLOSE c; COMMIT; END;

27 Bases de Données Bloc avec curseur « FOR » DECLARE CURSOR c IS SELECT * FROM produits WHERE qte = 0; BEGIN FOR p IN c LOOP INSERT INTO RupStock VALUES (SYSDATE, p.noprod); END LOOP; COMMIT; END;

28 Bases de Données C + SQL avec PL/SQL #include EXEC SQL BEGIN DECLARE SECTION VARCHAR nom[20]; VARCHAR piece[4]; int nodpt; VARCHAR status[50]; VARCHAR uid[20]; VARCHAR passwd[20]; EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE sqlca; main(){ /* lecture des caractéristiques dun nouvel employé EXEC SQL EXECUTE DECLARE -- var locales PL/SQL BEGIN INSERT INTO emp VALUES (:nom, …) Exception --TRT Exception END; END-EXEC; }

29 Bases de Données Procédure PL/SQL CREATE PROCEDURE RuptureStock IS CURSOR c IS SELECT * FROM produits; BEGIN FOR p IN c LOOP IF p.qte = 0 THEN INSERT INTO RupStock VALUES (SYSDATE, p.noprod); END IF; END LOOP; COMMIT; END RuptureStock;

30 Bases de Données Procédure PL/SQL CREATE PROCEDURE RuptureStockProduit (p Produits%ROWTYPE) IS BEGIN IF p.qte = 0 THEN INSERT INTO RupStock VALUES (SYSDATE, p.noprod); END IF; COMMIT; END RuptureStockProduit;

31 Bases de Données Fonction PL/SQL CREATE FUNCTION NbEmp (nodpt INTEGER) return INTEGER IS nb INTEGER; BEGIN SELECT count(e.noemp) INTO nb FROM employes e WHERE e.nodpt=nodpt; return (nb); END NbEmp;

32 Bases de Données Gestion des erreurs CREATE PROCEDURE Augmenter (noEmp INTEGER, augmentation REAL) IS salaire REAL; salaire_manquant EXCEPTION; BEGIN SELECT sal INTO salaire FROM employes WHERE num= noEmp; IF salaire IS NULL THEN RAISE salaire_manquant else UPDATE employes SET sal = salaire + augmentation WHERE num = noEmp; END if; Exception WHEN NO_DATA_FOUND THEN INSERT INTO resu VALUES (noEmp, inexistant); WHEN salaire_manquant THEN INSERT INTO resu VALUES (noEmp, sans salaire); END Augmenter;

33 Bases de Données Packages CREATE PACKAGE employe IS PROCEDURE Embaucher (nom VARCHAR2); PROCEDURE Augmenter(noEmp INTEGER, augmentation REAL); PROCEDURE Partir(noEmp INTEGER); END Employe; CREATE PACKAGE body employe IS PROCEDURE Embaucher (nom VARCHAR2) IS …. ; PROCEDURE Augmenter (noEmp INTEGER, augmentation REAL) IS …; PROCEDURE Partir(noEmp INTEGER) IS …; END employe;

34 Bases de Données Manipulation des procédures CREATE [PROCEDURE|FUNCTION|PACKAGE|PACKAGE BODY] Création + compilation CREATE or replace..; Modification + compilation Grant Grant execute on Augmenter to chefs; Drop [PROCEDURE|FUNCTION|PACKAGE|PACKAGE BODY] Suppression

35 Bases de Données Gestion des procédures Stockage des procédures dans le serveur Format source + Format compilé Optimisation des ordres SQL des procédures Gestion automatiques des dépendances entre les procédures et les autres objets de la BD Exécution dune procédure avec les droits daccès de son créateur

36 Bases de Données Appel dune fonction/procédure Outil sql*plus Execute employe.Augmenter(10, 300); Dans une fonction ou une procédure : Employe.augmenter(10, 300); RuptureStockProduit(p) Dans une requête SQL SELECT * FROM departement d WHERE NbEmp(d.nodpt) > 10 Dans un programme Embedded SQL À partir dun bloc PL/SQL Dans un outil de devt :Developper 2000 Trigger

37 Bases de Données Trigger CREATE trigger verifier_salaire IS BEFORE INSERT or UPDATE OF sal, poste ON employes FOR each row WHEN new.job != PDG) DECLARE minsal NUMBER; maxsal NUMBER; BEGIN SELECT min(sal), max(sal) INTO minsal, maxsal FROMemployes WHERE poste = :new.poste; IF (:new.sal maxsal) THEN RAISE en_dehors_borne; ELSIF (:new.sal < :old.sal) THEN RAISE augmentation_negative; ELSIF (:new.sal > 1.1 * :old.sal) THEN RAISE augmentation_importante; EXCEPTION … END;