Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parNoëlle Beaudry Modifié depuis plus de 9 années
1
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 de données BD – modèle de données du langage de programmation
2
02/06/2015© Robert Godin. Tous droits réservés.2 Interface programmatique (Call- Level Interface - SQL/CLI) n API spécifique au SGBD – e.g. Oracle Call Interface – non portable n API normalisée – standard de facto ODBC n développé par Microsoft pour le C – pilote ODBC pour client/serveur – SQL/CLI de SQL:1999 inspirée de ODBC – JDBC pour Java
3
02/06/2015© Robert Godin. Tous droits réservés.3 SQL enchâssé (Embedded SQL) n Code SQL dans le source du langage hôte n Syntaxe spéciale n Pré-compilation – Oracle : pro*C/C ++, pro*COBOL, …, JSQL n Moins portable – pré-compilateur spécifique au SGBD – traduit en API du SGBD n SQLJ (partie 0) traduit en API standard JDBC
4
02/06/2015© Robert Godin. Tous droits réservés.4 Extension procédurale à SQL (Persistent Stored Modules - SQL/PSM) n SQL + – structures de contrôle – procédures, fonctions, packages – support direct des types SQL pour les variables – exécution au niveau serveur de BD n Oracle – PL/SQL
5
02/06/2015© Robert Godin. Tous droits réservés.5 Routine invoquée en SQL n Stockée dans le schéma relationnel n Exécutée au niveau du serveur de BD n Langage – SQL/PSM – SQLJ (partie 1) : routines stockées en Java
6
02/06/2015© Robert Godin. Tous droits réservés.6 5.1SQL enchâssé n Syntaxe n Insertion d'une ligne dans la table Client
7
02/06/2015© Robert Godin. Tous droits réservés.7 Variables partagées n Déclaration n Utilisation de variables partagées n Vérification d ’exceptions avec SQLSTATE
8
02/06/2015© Robert Godin. Tous droits réservés.8 5.1.1SELECT à ligne unique
9
02/06/2015© Robert Godin. Tous droits réservés.9 5.1.2Curseur SQL
10
02/06/2015© Robert Godin. Tous droits réservés.10 5.1.3Mises à jour par curseur
11
02/06/2015© Robert Godin. Tous droits réservés.11 5.1.4SQL dynamique
12
02/06/2015© Robert Godin. Tous droits réservés.12 5.1.5Connexion (CONNECT)
13
02/06/2015© Robert Godin. Tous droits réservés.13 Suite n Syntaxe du CONNECT n Exemple avec SQL enchâssé en C n Pour passer d ’un connexion à l ’autre n Pour terminer une connexion
14
02/06/2015© Robert Godin. Tous droits réservés.14 5.2 Introduction à l'extension procédurale PL/SQL D'Oracle
15
02/06/2015© Robert Godin. Tous droits réservés.15
16
02/06/2015© Robert Godin. Tous droits réservés.16 Compilation et stockage dans le schéma avec SQL*plus
17
02/06/2015© Robert Godin. Tous droits réservés.17 Appel de la procédure avec SQL*plus
18
02/06/2015© Robert Godin. Tous droits réservés.18 5.2.1 Bloc PL/SQL
19
02/06/2015© Robert Godin. Tous droits réservés.19 Exécution d ’un bloc sous SQL*plus
20
02/06/2015© Robert Godin. Tous droits réservés.20 5.2.2 Déclaration de variables PL/SQL (DECLARE)
21
02/06/2015© Robert Godin. Tous droits réservés.21 5.2.3 Transfert d'une valeur de colonne d'un SELECT dans une variable (clause INTO)
22
02/06/2015© Robert Godin. Tous droits réservés.22 5.2.4 Affectation en PL/SQL
23
02/06/2015© Robert Godin. Tous droits réservés.23 5.2.5 Structure de contrôle IF
24
02/06/2015© Robert Godin. Tous droits réservés.24 5.2.6 Boucles (LOOP, FOR, WHILE)
25
02/06/2015© Robert Godin. Tous droits réservés.25 5.2.7 Traitement d'exception (EXCEPTION, RAISE) n Déclarer n Soulever n Attraper
26
02/06/2015© Robert Godin. Tous droits réservés.26 5.2.8 Curseur PL/SQL (CURSOR)
27
02/06/2015© Robert Godin. Tous droits réservés.27 Boucle FOR pour curseur PL/SQL
28
02/06/2015© Robert Godin. Tous droits réservés.28 5.2.9 Procédures et fonctions PL/SQL stockées
29
02/06/2015© Robert Godin. Tous droits réservés.29 Procédure stockée
30
02/06/2015© Robert Godin. Tous droits réservés.30 5.2.9.1 PRIVILÈGES DANS UNE ROUTINE STOCKÉE n Privilèges de l'appelant (invoker rights) n Privilèges de la routine (definer rights) – privilèges du créateur – par défaut
31
02/06/2015© Robert Godin. Tous droits réservés.31 Exemple privilège de l’appelant
32
02/06/2015© Robert Godin. Tous droits réservés.32 Exemple privilège du créateur
33
02/06/2015© Robert Godin. Tous droits réservés.33 Exemple privilège du créateur (suite)
34
02/06/2015© Robert Godin. Tous droits réservés.34 5.2.10 Package PL/SQL
35
02/06/2015© Robert Godin. Tous droits réservés.35 5.2.11 Déboguage du code PL/SQL n SHOW ERRORS sous SQL*plus n Package DBMS_OUTPUT n Table USER_SOURCE dans la métabase
36
02/06/2015© Robert Godin. Tous droits réservés.36 5.3JDBC n API standard pour JAVA n http://java.sun.com/products/jdbc/ http://java.sun.com/products/jdbc/ n Ensemble de classes n Besoin d ’installer un pilote JDBC dans l ’environnement JAVA
37
02/06/2015© Robert Godin. Tous droits réservés.37 5.3.1Architecture pour les pilotes JDBC
38
02/06/2015© Robert Godin. Tous droits réservés.38 5.3.2 Chargement d'un pilote JDBC (DriverManager) et établissement d'une connexion (Connection) n Charger les pilotes JDBC d ’ Oracle – N.B. La librairie des pilotes Oracle doit être accessible à la machine virtuelle Java. Voir http://www.info.uqam.ca/~godin/livres.html http://www.info.uqam.ca/~godin/livres.html – Avec JDK 1.1 (problème avec bloc statique) utiliser : n DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); n Établir une connexion avec le pilote OCI8 pour un serveur Oracle local – OCI8 est un pilote de type 2 n Voir aussi interface javax.sql.DataSource (chap. 15) – package optionnel de JDBC 2 – meilleure transparence, plus grande versatilité – maintenant préférée à DriverManager – obligatoire avec J2EE
39
02/06/2015© Robert Godin. Tous droits réservés.39 5.3.3 Création d ’un énoncé SQL (Statement)
40
02/06/2015© Robert Godin. Tous droits réservés.40 5.3.4Exécution d'une opération de mise à jour (INSERT, DELETE, UPDATE)
41
02/06/2015© Robert Godin. Tous droits réservés.41 5.3.6Exécution d'un SELECT (ResultSet)
42
02/06/2015© Robert Godin. Tous droits réservés.42 5.3.7 ResultSet défilable (scrollable), modifiable (updatable), sensible (sensitive) - JDBC2
43
02/06/2015© Robert Godin. Tous droits réservés.43 ResultSet modifiable (updatable) mises à jour susceptibles d ’être vues pas le ResultSet
44
02/06/2015© Robert Godin. Tous droits réservés.44 5.3.8 Support des types SQL:1999 sous JDBC 2
45
02/06/2015© Robert Godin. Tous droits réservés.45 5.3.9 Exécution en lot (batch) sous JDBC 2
46
02/06/2015© Robert Godin. Tous droits réservés.46 5.3.10Gestion des transactions n Par défaut : auto-commit n Pour modifier n Pour un commit explicite : n Pour un rollback :
47
02/06/2015© Robert Godin. Tous droits réservés.47 Suite n Changer le niveau d ’isolation de défaut n Transactions réparties JDBC 2 – Java Transaction API (JTA) n interface UserTransaction – begin(), commit() – voir chap. 15
48
02/06/2015© Robert Godin. Tous droits réservés.48 5.3.11Gestion des exceptions n Mécanisme try/catch de JAVA
49
02/06/2015© Robert Godin. Tous droits réservés.49 5.3.12 Utilisation de JDBC dans une applette Java n Déploiement avec le pilote thin n Contrainte de carré de sable n Exemple – http://www.labunix.uqam.ca/~r11340/ExemplesAppletJDBC/PageAppletJDBC.html
50
Exemple d ’applette avec pilote JDBC type 4 (thin)
51
02/06/2015© Robert Godin. Tous droits réservés.51 5.3.13Compilation et exécutions multiples avec la classe PreparedStatement n Compilation + exécution combinée au executeQuery n Compilation au prepareStatement n Compilation avec paramètres
52
02/06/2015© Robert Godin. Tous droits réservés.52 5.3.14 Exécution d'une procédure ou fonction stockée (CallableStatement)
53
02/06/2015© Robert Godin. Tous droits réservés.53 Appel de procédure stockée
54
02/06/2015© Robert Godin. Tous droits réservés.54 5.3.15 Accès aux méta- données (MetaData)
55
02/06/2015© Robert Godin. Tous droits réservés.55 DatabaseMetaData
56
02/06/2015© Robert Godin. Tous droits réservés.56 5.4 SQLJ n Partie 0 de SQLJ – SQL enchâssée en Java n Partie 1 de SQLJ – Routines stockées n Partie 2 de SQLJ – Utilisation de classes Java en tant que types SQL
57
02/06/2015© Robert Godin. Tous droits réservés.57 5.4.1 SQL enchâssé en Java (SQLJ : partie 0) n Ne vise que le statique n Traduit en JDBC n Peut combiner SQLJ et JDBC
58
02/06/2015© Robert Godin. Tous droits réservés.58 Variables partagées
59
02/06/2015© Robert Godin. Tous droits réservés.59 5.4.1.1 CONTEXTE DE CONNEXION Contexte implicite
60
02/06/2015© Robert Godin. Tous droits réservés.60 Contexte explicite
61
02/06/2015© Robert Godin. Tous droits réservés.61 Commit explicite
62
02/06/2015© Robert Godin. Tous droits réservés.62 5.4.1.3 SELECT QUI RETOURNE UN SINGLETON (CLAUSE INTO)
63
02/06/2015© Robert Godin. Tous droits réservés.63 5.4.1.4 ITÉRATEUR DE RÉSULTAT SQLJ
64
02/06/2015© Robert Godin. Tous droits réservés.64 Mise-à-jour par itérateur
65
02/06/2015© Robert Godin. Tous droits réservés.65 5.4.1.5 APPEL DE ROUTINES STOCKÉES EN SQLJ
66
02/06/2015© Robert Godin. Tous droits réservés.66 5.4.1.6 INTEROPÉRABILITÉ AVEC JDBC n Création d'un contexte SQLJ à partir d'une Connection JDBC n Extraction de la Connection d'un contexte n Conversion d'un itérateur en un ResultSet JDBC n Conversion d'un ResultSet JDBC en un iterateur SQLJ
67
02/06/2015© Robert Godin. Tous droits réservés.67 5.4.1.7 PROCESSUS DE TRADUCTION SQLJ
68
02/06/2015© Robert Godin. Tous droits réservés.68 5.4.2 SQLJ partie 1: routines stokées en Java
69
02/06/2015© Robert Godin. Tous droits réservés.69 Déploiement Oracle n Charger le code dans un schéma n Publier sous forme de routine stockée : n Appeler la fonction en SQL
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.