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

Connexion en mode application. Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre.

Présentations similaires


Présentation au sujet: "Connexion en mode application. Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre."— Transcription de la présentation:

1 Connexion en mode application

2 Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre laccès au SGBD à partir dun langage de haut niveau (C, JAVA, …) Problèmes BD –traités exactement comme en interactif –+ programmation non BD pour : Calculs Conversationnel Contrôle (ex: récursivité)

3 Bases de données - Yann Loyer3 Principe Programme classique (C, JAVA,…) + connexion serveur + tout ordre SGBD + gestion de la communication client/serveur Pour résoudre des problèmes : –utiliser les mêmes ordres quen mode interactif

4 Bases de données - Yann Loyer4 Cycle de vie dun programme Ordres SGBD inclus : –ne sont pas des instructions du langage hôte –lors de la précompilation détectés Remplacés par du C –lors de lexécution transmis au serveur

5 Bases de données - Yann Loyer5 Cycle de vie dun programme Éditeur de texte Programme source Précompilateur oracle Programme source modifié Compilateur standard Programme objet Editeur de liens Programme exécutable Bibliothèque oracle ex.pcex.c ex.oex.out

6 Bases de données - Yann Loyer6 Vocabulaire C : langage hôte Programme sexécutant : client en mode application Ordres SGBD : ordres inclus (embedded SQL statements) Variables hôtes : variables qui hébergent les valeurs SGBD

7 Bases de données - Yann Loyer7 Structure dun programme Un programme ProC est composé de deux sections: 1.Prologue de lapplication 2.Corps de lapplication

8 Bases de données - Yann Loyer8 Prologue (1) Cette partie est divisée en 3 sous-sections : 1.Section INCLUDE 2.Section DECLARE 3.Section CONNECT

9 Bases de données - Yann Loyer9 Prologue (2) Section INCLUDE permet la mise en action de certaines options par utilisation de variables #INCLUDE Par défaut, ProC ignore toutes les erreurs et continue lexécution si possible Exemples de variables –sqlca.sqlcode –Sqlca.sqlwarn

10 Bases de données - Yann Loyer10 Prologue (3) La section DECLARE contient les définitions de variables hôtes EXEC SQL BEGIN DECLARE SECTION; int numemp; char nomemp[10]; int numdep; EXEC SQL END DECLARE SECTION;

11 Bases de données - Yann Loyer11 Prologue (4) Section CONNECT : tout programme ProC doit effectuer une connexion à un SGBD Oracle avant daccéder aux données EXEC SQL CONNECT :user IDENTIFIED BY :password; Cette commande SQL doit être la première commande exécutable du programme ProC

12 Bases de données - Yann Loyer12 Corps de lapplication Cette partie contient le corps du programme ProC. Exemple #include EXEC SQL BEGIN DECLARE SECTION; varchar uid[20]; varchar pwd[20]; EXEC SQL END DECLARE SECTION; main( ) { strcpy(uid.arr,SCOTT); uid.len = strlen(uid.arr); strcpy(pwd.arr,TIGER); pwd.len = strlen(pwd.arr); EXEC SQL CONNECT :uid IDENTIFIED BY :pwd; printf(« connecté à Oracle comme utilisateur : %s », uid.arr); EXEC SQL CREATE TABLE VINS(NV number, Nom varchar(15), Domaine varchar(25)); printf(« Table VINS créée »); EXEC SQL COMMIT WORK; }

13 Bases de données - Yann Loyer13 Requêtes Deux façons de traiter les requêtes : 1.Requête renvoyant un seul n-uplet 2.Requête renvoyant un nombre quelconque de n-uplets

14 Bases de données - Yann Loyer14 Requêtes Requête renvoyant un seul n-uplet SELECT att 1,…,att n INTO :var 1, …, :var n FROM table 1,…,table m WHERE …

15 Bases de données - Yann Loyer15 Exemple Situation : Train ( client varchar(20), destination varchar(20), jour integer km integer ); Hypothèse : une seule destination par client Objectif : afficher la destination et le jour de Félix

16 Bases de données - Yann Loyer16 Exemple de programme #include void connexion(); void interrogation(); void déconnexion(); void compte_rendu(); main() { connexion(); interrogation(); déconnexion(); }

17 Bases de données - Yann Loyer17 Exemple de programme void connexion() { EXEC SQL begin declare section; char hs_login[8]; char hs_passwd[8]; EXEC SQL end declare section; strcpy(uid.arr,SCOTT); uid.len = strlen(uid.arr); strcpy(pwd.arr,TIGER); pwd.len = strlen(pwd.arr); EXEC SQL connect :hs_login identified by :hs_passwd ; compte_rendu(); }

18 Bases de données - Yann Loyer18 Exemple de programme void déconnexion() { EXEC SQL commit release; compte_rendu(); }

19 Bases de données - Yann Loyer19 Exemple de programme void interrogation() { EXEC SQL begin declare section; char hs_dest[20]; int hi_jour; EXEC SQL end declare section; EXEC SQL select destination, jour into :hs_dest, :hi_jour ; from train where client = « Félix »; compte_rendu(); printf( « Félix va à %s le jour %d », hs_dest, hi_jour ); }

20 Bases de données - Yann Loyer20 Exemple de programme void compte_rendu() { If (sqlca.sqlcode < 0) { printf( « Ordre non exécuté : %s », sqlca.sqlerrm.sqlerrmc); exit; }

21 Bases de données - Yann Loyer21 Requêtes Lorsque la requête retourne plusieurs n-uplets, le résultat est stocké dans un curseur DECLARE CURSOR OPEN CURSOR FETCH CLOSE CURSOR Un curseur est une zone de travail utilisée par Oracle pour stocker le résultat dune requête

22 Bases de données - Yann Loyer22 Exemple de programme void selection() { Char tampon[100]; EXEC SQL begin declare section; int hi_km; char hs_dest[20]; int i_dest; EXEC SQL end declare section; gets(tampon); hi_km = atoi(tampon); EXEC SQL DECLARE requête CURSOR FOR select destination from train where km < :hi_km ; EXEC SQL OPEN requête; compte_rendu();

23 Bases de données - Yann Loyer23 EXEC SQL FETCH requête INTO :hs_dest:i_dest ; /* i_dest variable indicatrice */ gestion_erreur( ); while ((sqlca.sqlcode>=0) && (sqlca.sqlcode!=1403)) { if (i_dest == -1) printf(« destination inconnue »); else printf(« %s\n »,hs_dest); EXEC SQL FETCH requête INTO :hs_dest:i_dest ; gestion_erreur( ); } EXEC SQL CLOSE requête; gestion_erreur( ); }


Télécharger ppt "Connexion en mode application. Bases de données - Yann Loyer2 Connexion en mode application Pour tout type dutilisateurs : –passif, actif, gérant Permettre."

Présentations similaires


Annonces Google