La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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.

Présentations similaires


Présentation au sujet: "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."— Transcription de la présentation:

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


Télécharger ppt "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."

Présentations similaires


Annonces Google