Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Développement des Applications des Bases de Données Chapitre 6, Sections 6.3.6--6.5.

Slides:



Advertisements
Présentations similaires
Réaliser en Java un programme client d’une Base de Données
Advertisements

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.
Langage de manipulation de données Ensemble de commandes permettant : – modifier la base : ajout, modification et suppression – interroger la base ex :
Formation C débutant. Notion de compilation source.c executable Phase de compilation Fichier de texte brut, inexploitable directement par la machine Fichier.
1 Créer les Applications de BDs : SQL Imbriqué Witold Litwin.
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
Architecture Web. Accès aux données Développement spécifique Conserver l'architecture classique en y insérant un système propriétaire SapphireWeb, ColdFusion,
Stéphane Frenot - Département Télécommunication - SID - II - Jdbc 280 JDBC Java Databases Connectivity.
Programmation dapplications Bases de données avec Java INT.
Programmation dapplication INT. 2 Bases de Données Plan du document Contexteslide 1 Programmer avec une BDslide 2 Client-Serveur SQL et architecture 3.
Georges Gardarin 1 LE LANGAGE DE REQUETES SQL l Origines et Evolutions l SQL1 86: la base l SQL1 89: l'intégrité l SQL2 92: la nouvelle norme l SQL3 98:
High Frequency Trading Introduction. Séminaires de 30 minutes, une fois par semaine (8 en tout) Sujets abordés – Définition dun algorithme et introduction.
JDBC: manipuler une base de données en Java IFT6800 – E 2007 Jian-Yun Nie.
Connexion base de données
Chapitre IV Object, interfaces, classes imbriquées.
Principes de programmation (suite)
(Procedural Language / Structured Query Language)
10 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux déclencheurs.
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.
Gestion des systèmes d’information
1 Développement des Applications des Bases de Données Chapitre 6.
Langages du Web Sémantique
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 ?
Master 1 SIGLIS java Lecteur Stéphane Tallard Chapitre 4 – Structures de contrôle.
1 Développement des Applications des Bases de Données Chapitre 6, Sections
P rocedural L anguage extensions to SQL Version 8.0 Disponible dans deux environnements: Les outils (Forms, Reports, Graphics) Au serveur de BD.
Cours N°2 Base de Données & Langage SQL
Programmation par Objets et Java
1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité.
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.
1 CSI 2532 Lab5 Installation de JDBC Février 13, 2012.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Évaluation des Requêtes: Survol Chapitre 12.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Le Modèle Relationnel Chapitre 3.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Survol du Stockage et de lIndexage Chapitre 8.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Contraintes et Triggers Chapitre 5,
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Gestion des Transactions: Survol Chapitre 16.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Gestion des Transactions: Survol Chapitre 16.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Le Modèle Relationnel Chapitre 3.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Survol du Stockage et de lIndexage Chapitre 8.
SQL: Requêtes, Programmation et Triggers
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Développement des Applications des Bases de Données Chapitre 6.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections 15.5.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Calcul Relationnel Chapitre 4, Section 4.3.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Animateur : Med HAIJOUBI
LANGAGE PASCAL Introduction rapide….
Juin 2006~ Brigitte Groléas ~ 1 J530 (JBD) Java : Base de Données.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Créer des packages.
Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 10 Accès distant aux bases de données.
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
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.
Procédures Stockées Fonctions Paquetages
JDBC (Complément de cours) IFT 3030
Langage de manipulation de données (LMD)
Transcription de la présentation:

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Développement des Applications des Bases de Données Chapitre 6, Sections

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke2 Survol JDBC SQLJ Procédures stockées

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke3 JDBC: Examen des Metadonnées Les objets de la classe DatabaseMetaData donnent des informations au sujet du SGBD et du catalogue de la base de données. DatabaseMetaData md = con.getMetaData(); // imprime de linfo au sujet du driver: System.out.println( Name: + md.getDriverName() + version: + md.getDriverVersion());

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke4 JDBC: Examen des Metadonnées (Suite) Un objet de la classe DatabaseMetaData contient 134 méthodes!!! - getCatalog() - getIndexInfo() - getTables() - getMaxConnections() etc.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke5 JDBC: Examen des Metadonnées (Suite) DatabaseMetaData md=con.getMetaData(); ResultSet trs=md.getTables(null,null,null,null); String tableName; While(trs.next()) { tableName = trs.getString(TABLE_NAME); System.out.println(Table: + tableName); //print all attributes ResultSet crs = md.getColumns(null,null,tableName, null); while (crs.next()) { System.out.println(crs.getString(COLUMN_NAME + ); }

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke6 Un Exemple (Semi-)Complet Connection con = // connecter DriverManager.getConnection(url, login", pass"); Statement stmt = con.createStatement(); String query = "SELECT name, rating FROM Sailors"; ResultSet rs = stmt.executeQuery(query); try { // handle exceptions // boucle parcourant les tuples du résultat while (rs.next()) { String s = rs.getString(name"); Int n = rs.getFloat(rating"); System.out.println(s + " " + n); } } catch(SQLException ex) { System.out.println(ex.getMessage () + ex.getSQLState () + ex.getErrorCode ()); }

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke7 SQLJ Complémente JDBC avec un modèle de requêtes (semi-)statiques: le compilateur peut faire une série de tâches: vérifier la syntaxe, les types des données, la conformité de la requête avec le schéma Exemple: #sql books = { SELECT name, rating INTO :name, :rating FROM Books WHERE sid = :sid }; Comparer avec ce qui se fait en JDBC: sid=rs.getInt(1); if (sid==1) {sname=rs.getString(2);} else { sname2=rs.getString(2);} SQLJ fait partie du standard SQL, contrairement au SQL imbriqué qui est spécifique à chaque vendeur.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke8 Exemple de Code SQLJ Int sid; String name; Int rating; … // itérateur nominal #sql iterator Sailors(Int sid, String name, Int rating); Sailors sailors; // Supposez que lapplication a déjà fixé la valeur de rating #sailors = { SELECT sid, sname INTO :sid, :name FROM Sailors WHERE rating = :rating }; // puise les résultats while (sailors.next()) { System.out.println(sailors.sid + + sailors.sname)); } sailors.close();

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke9 Iterateurs SQLJ Deux type ditérateurs (curseurs): Itérateur nominal Mentionne le nom de la variable ainsi que son type et permet de puiser les valeurs des colonnes par les noms. Exemple: transparent précédent. Itérateur positionnel Mentionne seulement le type de la variable et utilise FETCH.. INTO pour puiser les valeurs des colonnes: #sql iterator Sailors(Int, String, Int); Sailors sailors; #sailors = … while (true) { #sql {FETCH :sailors INTO :sid, :name} ; if (sailors.endFetch()) { break; } // traiter les valeurs obtenues pour sid et sname }

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke10 Procédures Stockées Définition dune procédure stockée: Programme exécuté à travers une seule instruction SQL Exécuté dans lespace des procès du serveur Avantages: Peut encapsuler la logique de lapplication et en même temps être près de la source de données Réutilise la logique de lapplication par différents utilisateurs Retourne les données en évitant lutilisation des curseurs

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke11 Procédures Stockées: Exemples CREATE PROCEDURE ShowNumReservations SELECT S.sid, S.sname, COUNT(*) FROM Sailors S, Reserves R WHERE S.sid = R.sid GROUP BY S.sid, S.sname Les procédures stockées peuvent avoir des paramètres: Trois différents modes: IN, OUT, INOUT CREATE PROCEDURE IncreaseRating( IN sailor_sid INTEGER, IN increase INTEGER) UPDATE Sailors SET rating = rating + increase WHERE sid = sailor_sid

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke12 Procédures Stockées: Exemples (Suite) Les procédures stockées ne doivent pas nécessairement être écrites en SQL: CREATE PROCEDURE TopSailors( IN num INTEGER) LANGUAGE JAVA EXTERNAL NAME file:///c:/storedProcs/rank.jar

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke13 Exécution des Procédures Stockées EXEC SQL BEGIN DECLARE SECTION Int sid; Int rating; EXEC SQL END DECLARE SECTION // Exécution de la procédure stockée EXEC CALL IncreaseRating(:sid,:rating);

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke14 Exécution des Procédures Stockées (Suite) JDBC: CallableStatement cstmt= con.prepareCall({call ShowSailors}); ResultSet rs = cstmt.executeQuery(); while (rs.next()) { … } SQLJ: #sql iterator ShowSailors(…); ShowSailors showsailors; #sql showsailors={CALL ShowSailors}; while (showsailors.next()) { … }

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke15 SQL/PSM La plupart des SGBDs permettent aux utilisateurs de stocker des procédures en usant dun language simple et tout usage proche de SQL Le standard SQL/PSM est représentatif de tels langages. Déclaration dune procédure stockée: CREATE PROCEDURE name(p1, p2, …, pn) déclarations de variables locales code de la procédure; Declaration dune fonction: CREATE FUNCTION name (p1, …, pn) RETURNS Type de données se SQL déclarations de variables locales code de la fonction;

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke16 Principaux Éléments de SQL/PSM CREATE FUNCTION rate Sailor (IN sailorId INTEGER) RETURNS INTEGER DECLARE rating INTEGER DECLARE numRes INTEGER SET numRes = (SELECT COUNT(*) FROM Reserves R WHERE R.sid = sailorId) IF (numRes > 10) THEN rating =1; ELSE rating = 0; END IF; RETURN rating;

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke17 Principaux Éléments de SQL/PSM (Suite) Variables locales (DECLARE) Valeur de retour (RETURNS) des fonctions (FUNCTION) Assignement des variables avec SET Branches et boucles: IF (condition) THEN instructions; ELSEIF (condition) instructions; … ELSE instructions; END IF; LOOP instructions; END LOOP Des requêtes peuvent faire partie des expressions Les curseurs peuvent être naturellement utilisés sans EXEC SQL

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke18 Résumé Le SQL imbriqué permet lexécution de requêtes paramétriques et statiques au sein dun langage hôte Le SQL dynamique permet lexécution de requêtes ad-hoc au sein dun langage hôte Le mécanisme de curseur permet de puiser un tuple à la fois et de résoudre l impedance mismatch entre la langage hôte et SQL Des APIs tels que JDBC introduisent un niveau dabstraction entre lapplication et le SGBD

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke19 Résumé (Suite) SQLJ est un modèle statique de requêtes vérifiées pendant la compilation Les procédures stockées exécutent la logique de lapplication directement sur le serveur SQL/PSM est un standard pour lencodage des procédures stockées