1 Développement des Applications des Bases de Données Chapitre 6.

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
Vues.
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
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.
TP 3-4 BD21.
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.

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.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
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
Calcul Relationnel Chapitre 4, Section 4.3.
L’utilisation des bases de données
1 Développement des Applications des Bases de Données Chapitre 6, Sections
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Principes de programmation
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections 15.5.
SQL: Contraintes et Triggers
Algèbre Relationnelle
Optimisation des Requêtes Relationnelles
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
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:
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.
PL/SQL Noreddine GHERABI 1.
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 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.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Les transactions.
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
‘‘Open Data base Connectivity‘‘
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.
Les Composants de l’architecture Oracle
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
Créer des packages.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 10 Accès distant aux bases de données.
6 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux packages.
Gérer les rôles.
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
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
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.
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
Interface Java – Oracle : JDBC. I-2 JDBC (Java DataBase Connectivity) : interface API (Application Programming Interface) qui permet d’exécuter des ordres.
JDBC (Complément de cours) IFT 3030
Initiation aux bases de données et à la programmation événementielle
Introduction au langage PL/SQL
Les exceptions Une exception est un identificateur PL/SQL détecté pendant la phase d’exécution. Comment est-elle déclenchée ? À la suite d’une erreur.
Le Langage de Manipulation de Données LMD Module 6.
Développement des Applications des Bases de Données
Transcription de la présentation:

1 Développement des Applications des Bases de Données Chapitre 6

2 Survol SQL dans les codes dapplication SQL imbriqué Curseurs SQL dynamique JDBC SQLJ Procédures stockées

3 SQL dans les codes dApplication Les commandes SQL peuvent être appelées à partir dun programme dapplication («langage hôte» -- C++, Java, etc ). Les instructions SQL peuvent référer à des variables du langage hôte (y compris des variables utilisées pour retourner les statuts). On doit inclure une instruction pour connecter à la base de données appropriée. Deux approches dintégration existent: Instructions SQL imbriquées dans le langage hôte (« Embedded SQL », SQLJ) Création dune API spéciale pour appeler les commandes SQL (JDBC)

4 SQL dans les codes dApplication (Suite) Les relations SQL sont des (multi)ensembles de tuples qui nimposent aucune limite a priori sur le nombre de tuples. Les langages de programmation traditionnels (C, C++, etc.) nont pas une telle structure de données. Ce problème est appelé inadaptation dimpédance (« impedance mismatch »). SQL supporte un mécanisme appelé curseur pour résoudre ce problème. Un curseur est un élément additionnel de SQL qui comble le fossé causé par linadaptation dimpédance.

5 SQL Imbriqué: Variables EXEC SQL BEGIN DECLARE SECTION char c_sname[20]; long c_sid; short c_rating; float c_age; EXEC SQL END DECLARE SECTION Deux problèmes avec les variables: correspondance des types (solution: casting/correspondance explicite) inadaptation dimpédance (solution: le mécanisme de curseur) Deux variables spéciales derreur (une au moins doit être déclarée): SQLCODE ( long, est négative si une erreur est apparue) SQLSTATE ( char[6], codes prédéfinies pour des erreurs usuelles)

6 SQL Imbriqué: Instructions Approche: instructions SQL imbriquées dans le langage hôte. Un préprocesseur convertit les instructions SQL en des appels API. Ensuite un compilateur régulier prend le relais pour compiler le code. Éléments du langage: Pour connecter à une base de données: EXEC SQL CONNECT Pour exécuter des instructions SQL: EXEC SQL Statement;

7 SQL Imbriqué: Instructions (Suite) Exemple: Insérer un tuple formé avec des valeurs issues des variables du langage hôte: EXEC SQL INSERT INTO Sailors VALUES (:c_sname, :c_sid, :c_rating, :c_age); Commande spéciale pour contrôler les erreurs après des instructions SQL: EXEC SQL WHENEVER [SQLERROR|NOT FOUND] [CONTINUE|GOTO smt]

8 Curseurs: Intuition On peut déclarer un curseur sur une relation ou une instruction de requête (qui en fait génère une relation). On peut ouvrir un curseur déclaré, et lutiliser pour puiser ( fetch ) de manière répétée des tuples et, après, déplacer le curseur, jusquà ce que tous les tuples aient été récupérés. On peut utiliser une clause spéciale, appelée ORDER BY, dans les requêtes accessibles aux curseurs afin de contrôler lordre dans le quel les tuples doivent être récupérés. Les attributs mentionnés dans la clause ORDER BY doivent aussi lêtre dans la clause SELECT. On peut enfin clore un curseur ouvert. On peut aussi modifier/effacer des lignes en utilisant un curseur. Cependant, INSERT, DELETE, et UPDATE peuvent être utilisés sans curseur.

9 Exemple dUtilisation de Curseur sinfo est le curseur. Il est illégal de remplacer S.sname par S.sid dans la clause ORDER BY ! On peut ajouter S.sid à la clause SELECT et remplacer S.sname par S.sid dans la clause ORDER BY. EXEC SQL DECLARE sinfo CURSOR FOR SELECT S.sname FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color=red ORDER BY S.sname

10 Curseur: Syntaxe Syntaxe générale pour déclarer les curseurs: DECLARE cursorname [INSENSITIVE] [SCROLL] CURSOR [WITH HOLD] FOR query [ORDER BY order-item-list] [FOR READ ONLY | FOR UPDATE] INSENSITIVE: une copie privée du curseur est faite. SCROLL: permet plus de flexibilité pour lopération FETCH. WITH HOLD: curseur nest pas fermé quand la transaction est validée. Variante de la commande UPDATE pour les curseurs: UPDATE Sailors SET S.age = S.age+10 WHERE CURRENT OF sinfo /* Modifie la valeur courante du curseur sinfo */

11 Imbriquer SQL dans C: Exemple char SQLSTATE[6]; EXEC SQL BEGIN DECLARE SECTION char c_sname[20]; short c_minrating; float c_age; EXEC SQL END DECLARE SECTION c_minrating = random(); EXEC SQL DECLARE sinfo CURSOR FOR SELECT S.sname, S.ageFROM Sailors S WHERE S.rating > :c_minrating ORDER BY S.sname; EXEC SQL OPEN sinfo; do { EXEC SQL FETCH sinfo INTO :c_sname, :c_age; printf(%s is %d years old\n, c_sname, c_age); } while (SQLSTATE != 02000); EXEC SQL CLOSE sinfo;

12 SQL Dynamique Les instructions SQL imbriquées sont connues par le compilateur à lavance («compile time»). Il y a des situations exigeant lexécution dinstructions SQL en passant (« on-the-fly » /«run time»)! Deux commandes principales à ce sujet: PREPARE sql_cmd FROM sql_string EXECUTE sql_cmd Exemple: char c_sqlstring[]= {DELETE FROM Sailors WHERE raiting>5}; EXEC SQL PREPARE deleteCommand FROM :c_sqlstring; EXEC SQL EXECUTE deleteCommand;

13 APIs en Lieu et Place de lImbrication Au lieu de modifier le compilateur, ajouter des bibliothèques avec des instructions dappel des bases de données (API). Interface spéciale standard: procédures/objets Passer les instructions SQL (en forme de chaînes de caractères) à partir du langage hôte, et présenter les ensembles de résultats dans une manière compréhensible pour le langage hôte. Exemples: ODBC; JDBC (Sun Corporation : API Java) JDBC est supposé être indépendant de tout SGBD Un pilote (driver) reçoit les instructions dappel et les traduit dans le code spécifique du SGBD. La base de données peut se trouver à un autre bout du réseau.

14 JDBC: Architecture Quatre composantes architecturales: Application (initie et termine des connexions, soumet des instructions SQL) Gestionnaire des pilotes (Driver manager) (choisit --loads-- un driver JDBC) Driver (connecte à la source des données, transmet des requêtes et retourne/traduit les résultats et les codes derreur) Source des données (exécute les instructions SQL)

15 Classes et Interface pour JDBC Étapes pour soumettre une requête: 1. Choisir le driver JDBC (via un gestionnaire) 2. Connecter à la source de données 3. Exécuter les instructions SQL

16 Connexions JDBC Linteraction avec une source de données se fait par lentremise dune session qui est démarrée par la création dun objet de type Connection. Chaque session est démarrée via un URL JDBC. URL JDBC(i.e. un URL utilisant le protocole JDBC): jdbc: : Exemple: Etablir une connexion à une BD Oracle précise: String url=jdbc:oracle: connexion con; try{ con = DriverManager.getconnexion(url,usedId,password); } catch SQLException excpt { …}

17 Interface pour les Connexions public int getTransactionIsolation() et void setTransactionIsolation(int level) Détermine le degré disolation de la connexion en cours. public Boolean getReadOnly() et void setReadOnly(boolean b) Spécifie si les transactions dans la connexion sont pour lecture seulement (read-only). public boolean getAutoCommit() et void setAutoCommit(boolean b) Si autocommit est vrai, chaque instruction SQL est considérée comme une transaction autonome. La transaction est validée par commit(), ou abandonnée par rollback(). public boolean isClosed() Vérifie si la connexion est encore ouverte.

18 JDBC: Exceptions et Avertissements java.sql émet des exceptions SQLException si une erreur apparaît. SQLWarning est une sousclasse de SQLException; (pas du tout émis mais leur existence doit être explicitement testé si on veut les voir) Méthodes dans la classe SQLException: getMessage(), getSQLState(), getErrorCode(), getNextException(), …