Programmation Procédurale et SQL

Dimension: px
Commencer à balayer dès la page:

Download "Programmation Procédurale et SQL"

Transcription

1 KWWSZZZDGHOHLPDJIUaGRQVH]FRXUV Programmation Procédurale et SQL Didier DONSEZ Université Joseph Fourier IMA IMAG/LSR/ADELE 'LGLHU'RQVH]#LPDJIU 'LGLHU'RQVH]#LHHHRUJ

2 2 Motivations (i) Limites de SQL Langage déclaratif (non procédural) facile d exprimer des requêtes MAIS pas de structure de contrôle boucle itérative, contrôle séquentiel Il existe parfois une solution en «pur SQL» Sinon Exemple du puzzle de Joe Celko Certes, il faut se creuser la tête Langage Procédural + SQL

3 Motivations (ii) 3 Besoins Procédure variables locales structures de contrôle ERXFOHLWpUDWLYHWHVWH[FHSWLRQ parcours du résultat d une requête ligne à ligne FXUVHXU LPEULFDWLRQGHVSDUFRXUVFXUVHXUVLPEULTXpV Exécution par le client / par le serveur Curseur «Pointeur» sur la ligne courante Transfert des valeurs entre la ligne pointée et les variables de la procédure

4 3 Solutions SQL Dynamique Interface SQL/CLI et Middleware ODBC et JDBC Embedded SQL in 3GL «SQL Procédural» 4

5 Remarque 1: Problème de l Impedance Mismatch 5 Typage différent entre SQL et C, C++, Java,... conversion, arithmétique 180%(5[ ¼ LQW"ORQJ" '(&,0$/[\180%(5[\ ¼ IORDW "GRXEOH" 9$5&+$5[ ¼ FKDU>[@"VWULQJ" constructeur de type Les valeurs NULL représentent les valeurs manquantes ou non renseignées absente des langages hôtes Logique à 3 niveaux 758(81.12:)$/6( 18// 18//,681.12:

6 Remarque 2: Risques de la programmation procédurale 6 La solution SQL pur n est pas trivial le développeur propose une solution procédurale suite de plusieurs requêtes SQL le développeur se substitue parfois à l optimiseur Exemple imbrication de curseurs sur deux tables pour réaliser une jointure

7 Interface SQL/CLI et Middleware ODBC et JDBC Motivations Dynamic SQL SQL/CLI ODBC JDBC DBI pour PERL Avantages et Inconvénients

8 8 Motivations Connexions simultanées vers plusieurs bases Consultation et Modification La requête n est analysée qu à l exécution son code SQL peut être généré ou saisis qu à l exécution 2 formes Dynamic SQL utilisation de sections (proche d Embedded SQL) SQL/CLI nécessite un précompilateur API bas niveau pour les applications

9 Dynamic SQL 9 Requêtes SQL chaîne de caractères décrivant la requête SQL la requête est analysée (PREPARE) à l exécution puis exécutée (EXECUTE) - Erreur de Syntaxe - + Absence de la source de données + Génération automatique de requêtes Exemple en C EXEC SQL BEGIN DECLARE SECTION; char requete[max_query_length]; EXEC SQL END DECLARE SECTION; while(1) { } printf("\nnouvelle requête:"); scanf("%s",requete); EXEC SQL 35(3$5( q FROM : requete; EXEC SQL (;(&87( q; printf("\nnouvellerequête:"); scanf("%s",requete); EXEC SQL (;(&87(,00(',$7( : requete;

10 10 L interface SQL/CLI CLI : Call Level Interface API normalisé par l ANSI Evolution dans SQL3, dans Oracle 8,... prise en compte des extensions Objet

11 Les Middlewares SQL/CLI 11 Plusieurs Offres ODBC SQL/CLI Open DataBase Connectivity (MicroSoft) JDBC Java DataBase Connectivity (JavaSoft) SQL/CLI IDAPI Integrated Database Application Interface (Borland) DAL Data Access Language (DEC/Apple) DRDA Distributed Remote Database Access (IBM/XOpen) A U SQL*Net (Oracle) Adapteur IDAPI P T I L I S A T E U R P L I C A T I O N S API Outils Interactif I D A P I pour DBase Adapteur IDAPI pour SQL*Net Adapteur IDAPI pour ODBC Driver ODBC pour Oracle Driver ODBC pour MSAccess TCP/IP fichiers locaux fichiers locaux Serveur ORACLE

12 12 ODBC 2SHQ 'DWD%DVH&RQQHFWLYLW\ Objectif Le "MiddleWare" offre une interface unique d'accéder aux données quelque soit le format, la localisation,... Indépendance Application / Serveurs BD (MultiVendeurs) Principes abstractions/concepts de SQL/CLI (ISO et ANSI) API MS Windows pour manipuler des Tables SQL dans des fichiers locaux servies par des serveurs SGBD Relationnels en mode Client/Serveur plusieurs sources accessibles simultanément

13 13 Architecture d ODBC Architecture Modulaire U T I L I S A T E U R utilisant des drivers d adaptation au format de la source de données au moyen d accès (protocole réseau, fichier local) A P P L I C A T I O N S Outils API Interactifs O D B C Driver ODBC pour Oracle Driver ODBC pour MS Access Driver ODBC pour CQL SQL/NET TCP/IP L E C TE U R SGF ISO Serveur Oracle Base Distante Fichier Local Carte GEMxCOS Base CQL

14 Configuration des sources ODBC 14

15 MicroSoft ADO $FWLYH; 'DWD2EMHW Composant ActiveX 15

16 ADO dans un ASP (i) 3DUFRXUVG XQHWDEOHDYHFXQFXUVHXU 16 #/$1*8$*( -6FULSW! LQFOXGH ILOH DGRMDYDVLQF! +70/!+($'!7,7/(!5HTXrWH6LPSOH7,7/(!+($'!%2'<! K!/LVWHGHV$XWHXUVK!KU! YDUFXU'LU 6HUYHU0DS3DWK??LLVVDPSOHV??VGN??DVS??GDWDEDVH??DXWKRUVPGE YDUR&RQQ 6HUYHU&UHDWH2EMHFW$'2'%&RQQHFWLRQ R&RQQ2SHQ'%4 FXU'LU'ULYHU ^0LFURVRIW$FFHVV'ULYHUPGE` 'ULYHU,G ),/ 06$FFHVV YDUR5V R&RQQ([HFXWH6(/(&7 )URPDXWKRUV! 7$%/(ERUGHU! ZKLOH R5VHRI^! WU! IRU,QGH[,QGH[R5VILHOGVFRXQW,QGH[^! 7' 9$OLJQ WRS! R5V,QGH[!7'! `! WU! R5V0RYH1H[W `! 7$%/(! R5VFORVH R&RQQFORVH! %2'<!+70/!

17 ADO dans un ASP (ii) $MRXWHW6XSSUHVVLRQG XQHOLJQH 17 K!6XSSUHVVLRQHW$MRXWG XQDXWHXUK!KU! «R5V 6HUYHU&UHDWH2EMHFW$'2'%5HFRUGVHW R5V$FWLYH&RQQHFWLRQ R&RQQ R5V6RXUFH 6(/(&7)520 DXWKRUV:KHUH R5V&XUVRU7\SH DG2SHQ6WDWLFR5V/RFN7\SH DG/RFN2SWLPLVWLF R5V2SHQR5V$GGQHZ R5V$XWKRU9DOXH -RKQ6WHLQEHFN R5V<HDU%RUQ9DOXH R5V8SGDWH 5HVSRQVH:ULWHS!$XWHXU,QVHUpR5V$XWKRUR5V<HDU%RUQR5V&ORVH R5V 6HUYHU&UHDWH2EMHFW$'2'%5HFRUGVHW R5V$FWLYH&RQQHFWLRQ R&RQQ R5V6RXUFH 6(/(&7)520 DXWKRUV :+(5( <HDU%RUQ DQG $XWKRU -RKQ6WHLQEHFN R5V&XUVRU7\SH DG2SHQ)RUZDUG2QO\ R5V/RFN7\SH DG/RFN2SWLPLVWLF R5V2SHQR5V'HOHWHR5V8SGDWH 5HVSRQVH:ULWHS!$XWHXU6XSSULPp3DXO(QILHOG R5V&ORVH! %2'<!+70/!

18 ADO dans un ASP (iii),qyrfdwlrqg XQH3URFpGXUH6WRFNpH 18 #/$1*8$*( -6FULSW! LQFOXGH ILOH DGRMDYDVLQF! +70/!+($'!7,7/(!,QYRFDWLRQG XQHSURFpGXUHVWRFNp7,7/(!+($'! %2'<! K!,QYRFDWLRQG XQHSURFpGXUHVWRFNpK!KU! YDUR&RQQ 6HUYHU&UHDWH2EMHFW$'2'%&RQQHFWLRQ YDUR&PG 6HUYHU&UHDWH2EMHFW$'2'%&RPPDQG R&RQQ2SHQ'61 /RFDO6HUYHU8,' VD3:' '$7$%$6( SXEV R&PG$FWLYH&RQQHFWLRQ R&RQQ R&PG&RPPDQG7H[W ^FDOO E\UR\DOW\"` R&PG3DUDPHWHUV$SSHQGR &PG&UHDWH3DUDPHWHU#3HUFHQWDJH DG,QWHJHU DG3DUDP,QSXW R&PG#3HUFHQWDJH YDUR5V R&PG([HFXWH!,'GHODXWHXU 5HVSRQVH:ULWHR5VDXBLG!%5! %2'<!+70/!

19 JDBC -DYD'DWD%DVH&RQQHFWLYLW\ 19 Motivations API Java pour manipuler des Tables SQL dans des fichiers locaux servies par un serveur BD une seule API uniforme pour tous les SGBDs (relationnels) abstractions/concepts de X/Open SQL Call Level Intf Même principe que les Middlewares comme ODBC

20 20 Architecture JDBC Composants d adaptation (Drivers) un driver pour chaque SGBD (Oracle, Sybase,...) un driver pour chaque format de fichier (Dbase,Paradox) $SSOL HQ-DYD $SSOL HQ-DYD JDBC Mng Pont JDBC / ODBC Driver JDBC pour DBase Driver JDBC pour SQL*Net Driver ODBC pour Oracle Driver ODBC pour MSAccess TCP/IP fichiers locaux fichiers locaux Serveur ORACLE

21 Drivers JDBC 21 4 types de drivers JDBC pur Java + DONC téléchargeable natif - installation du driver sur le client pont JDBC / ODBC - installation d ODBC et des drivers sur le client + utilisation des drivers ODBC existants serveur Middleware - encombrement serveur + protocole autre que TCP/IP

22 Drivers JDBC : pur Java vs Natif 22 $SSOLFDWLRQ$SSOHW -'%&0DQDJHU 'ULYHUHQSXU-DYD 6HUYHXU%' $SSOLFDWLRQ$SSOHW -'%&0DQDJHU 'ULYHU-DYD $3,1DWLYH&OLHQW%' && 6HUYHXU%'

23 Drivers JDBC : pont ODBC vs Middleware 23 $SSOLFDWLRQ$SSOHW -'%&0DQDJHU 'ULYHU-DYD2'%& 3RQW-'%&2'%&& 'ULYHU2'%&&& 6HUYHXU%' $SSOLFDWLRQ$SSOHW -'%&0DQDJHU 'ULYHU-DYD &OLHQW0LGGOHZDUH 6HUYHXU 0LGGOHZDUH $3,&OLHQW%' 2'%& 0QJ 'ULYHU2'%& 6HUYHXU%'

24 3DFNDJHMDYDVTO 24 Interfaces DriverManager Connection, PooledConnection, XAConnection Statement PreparedStatement CallableStatement ResultSet ResultSetMetaData DatabaseMetaData RowSet SQLData, SQLInput, SQLOutput Classes DriverManager, DriverPropertyInfo Date, Time, TimeStamp, Types, Struct, 64/([FHSWLRQ64/:DUQLQJ'DWD7UXQFDWLRQ

25 Connexion JDBC 25 classe java.sql.connection URL d une source de données (relationnelle) jdbc:<subprotocol>:<subname> jdbc:dcenaming:accounts-payable jdbc:dbnet://dbms.mycomp.com:356/ecom jdbc:msql://dbsv.acme.com/user jdbc:oracle:thin:@enee:1521:istv jdbc:odbc:ecom jdbc:odbc:ecom;cachesize=20;extensioncase=lower jdbc:odbc:ecom;uid=admin;pwd=nimda jdbc:gemdbjdbc:/1f00/1f10... Extension JDBC3.0 aux fichiers plats et aux feuilles de calcul

26 26 JDBC &XUVHXU ª FODVV (PSOR\H ^ SXEOLFVWDWLFYRLG PDLQ6WULQJ DUJV >@ WKURZV 64/([FHSWLRQ &ODVV1RW)RXQG([FHSWLRQ ^WU\^ &ODVVIRU1DPH RUDFOHMGEFGULYHU2UDFOH'ULYHU &ODVVIRU1DPHVXQMGEFRGEF-GEF2GEF'ULYHU 6WULQJ GEXUO MGEFRUDFOHRFL# &RQQHFWLRQFRQQ 'ULYHU0DQDJHUJHW&RQQHFWLRQGEXUOWRWRSDVVHPRW 6WDWHPHQWVWPW FRQFUHDWH6WDWHPHQW 5HVXOW6HWUV VWPWH[HFXWH4XHU\ 6(/(&7 QXPHPS QDPH VDODU\ )520(03/2<( ZKLOH UVQH[W^ 6WULQJV UVJHW6WULQJ IORDW I UVJHW)ORDWVDODU\ 6\VWHPRXWSULQWOQVJDJQHI `UVFORVH `FDWFK([FHSWLRQH^HSULQW6WDFN7UDFH``

27 27 JDBC YDOHXUQXOOH Rappel une valeur nulle (NULL) en SQL signifie : valeur inconnue, valeur non renseignée,... 5HVXOW6HWUV VWPWH[HFXWH4XHU\ 6(/(&7 QXPHPS QDPH VDODU\ )520(03/2<( ZKLOH UVQH[W^6WULQJV UVJHW6WULQJ IORDW I UVJHW)ORDWVDODU\ LIUVZDV1XOO 6\VWHPRXWSULQWOQ VQDSDVGHVDODLUH HOVH 6\VWHPRXWSULQWOQ VJDJQHI ` UVFORVH Remarque la méthode isnull() de JDBC0.5 permettait LIUVLV1XOO 6\VWHPRXWSULQWOQ VQDSDVGHVDODLUH HOVH 6\VWHPRXWSULQWOQ VJDJQHUVJHW)ORDW cependant l implantation étant difficile, elle a été abandonnée

28 JDBC SDVVDJHG DUJXPHQWVPRGLILFDWLRQWUDQVDFWLRQ 28 FODVV (PSOR\H ^ SXEOLFVWDWLFLQW XSGDWH(PSOR\H LQWQXP6WULQJQRP WKURZV 64/([FHSWLRQ &ODVV1RW)RXQG([FHSWLRQ ^WU\^ &ODVVIRU1DPH RUDFOHMGEFGULYHU2UDFOH'ULYHU 6WULQJ GEXUO MGEFRUDFOHRFL# &RQQHFWLRQFRQQ 'ULYHU0DQDJHUJHW&RQQHFWLRQGEXUOWRWRSDVVHPRW FRQQVHW$XWR&RPPLWIDOVH 3UHSDUHG6WDWHPHQW SVWPW FRQQSUHSDUH6WDWHPHQW 83'$7((PSOR\H 6(7VDODU\ "QDPH ":+(5(QXPHPS " SVPWFOHDU3DUDPHWHUV SVPWVHW1XOO SVPWVHW6WULQJQRPSVPWVHW,QWQXP LQWQE/LJQHV0RGLILHHV SVPWH[HFXWH8SGDWH LIQE/LJQHV0RGLILHHV FRQQFRPPLWHOVH FRQQUROOEDFN `FDWFK([FHSWLRQH^ HSULQW6WDFN7UDFH``

29 29 JDBC DSSHOG XQHSURFpGXUHVWRFNpH FODVV (PSOR\H ^ SXEOLFVWDWLFLQW SD\UDLVH &RQQHFWLRQFRQQLQWQXP WKURZV 64/([FHSWLRQ^ WU\ ^ &DOODEOH6WDWHPHQW FVWPW FRQQSUHSDUH&DOO^FDOO VSBSD\UDLVH""` FVWPWUHJLVWHU2XW3DUDPHWHUMDYDVTO7\SHV,17 SVPWVHW,QWQXP FVPWH[HFXWH UHWXUQ FVWPWJHW,QW `FDWFK([FHSWLRQH^ HSULQW6WDFN7UDFH``

30 JDBC 6WUHDPV$6&,,HW%LQDLUHV 30 FODVV (PSOR\H ^ SXEOLF VWDWLFYRLG LQIR&RQQHFWLRQFRQQ LQWQXP WKURZV 64/([FHSWLRQ^WU\ ^ 6WDWHPHQWVWPW FRQFUHDWH6WDWHPHQW 5HVXOW6HWUV VWPWH[HFXWH4XHU\ 6(/(&7 QDPHSKRWR FY )520(03/2<( ZKLOH UVQH[W^ 6WULQJV UVJHW6WULQJ %XIIHUHG5HDGHUFY QHZ %XIIHUHG5HDGHU QHZ,QSXW6WUHDP5HDGHUUVJHW$VFLL6WUHDPFY ZKLOHFYUHDG\^RXWSULQWOQFYUHDGOLQH` %XIIHUHG,QSXW6WUHDPJLI'DWD QHZ %XIIHUHG,QSXW6WUHDP QHZ %LQDU\,QSXW6WUHDPUVJHW%LQDU\6WUHDPSKRWR ZKLOHOHQ JLI'DWDUHDGEXIEXIOHQJWK ^ «` `UVFORVH

31 31 JDBC 5HVXOW6HW0HWD'DWD FODVV+70/5HVXOW6HW^/LYUH6HUYOHW([S SULYDWH5HVXOW6HWUV SXEOLF+70/5HVXOW6HW5HVXOW6HWUV^WKLVUV UV` SXEOLF6WULQJ WR6WULQJ^ 6WULQJ%XIIHURXW QHZ 6WULQJ%XIIHURXWDSSHQG7$%/(! 5HVXOW6HW0HWD'DWD UVPG UVJHW0HWD'DWD LQWQXPFROV UVPGJHW&ROXPQ&RXQW RXWDSSHQG75! IRULQWL LQXPFROVL^ RXWDSSHQG7+!DSSHQGUVPGJHW&ROXPQ/DEHOL ` RXWDSSHQG75! «

32 JDBC JHW2EMHFW 32 «VXLWHGH+70/5HVXOW6HWWR6WULQJ ZKLOH UVQH[W^ RXWDSSHQG75! IRULQW L LQXPFROVL^ RXWDSSHQG7+! 2EMHFWREM UVJHW2EMHFWL RXWDSSHQGREM QXOO" QEVSREMWR6WULQJ RXWDSSHQG7+! ` RXWDSSHQG75! ` RXWDSSHQG7$%/(!

33 33 JDBC JHW2EMHFW 5HVXOW6HWUV VWPWH[HFXWH4XHU\ 6(/(&7 QXPHPS QDPH VDODU\ )520(03/2<( ZKLOH UVQH[W^ 6WULQJV UVJHW6WULQJ IORDW I UVJHW)ORDWVDODU\ LIUVZDV1XOO«HOVH«ZDV1XOOWHVWHVLODGHUQLqUHYDOHXUHVW18// ` «ZKLOH UVQH[W^DOWHUQDWLYHDYHFJHW2EMHFW 2EMHFWREM REM UVJHW2EMHFW6WULQJV REMWR6WULQJ REM UVJHW2EMHFWVDODU\ LIREM QXOO«HOVH^WHVWHVLODYDOHXUHVW18// )ORDW I )ORDWREM«SHXWOHYHU&DVW([FHSWLRQ ``

34 Correspondance de type SQL-Java (i) 34 7\SH64/ 180(5,& '(&,0$/ %,7 7,1<,17 60$//,17,17(*(5 %,*,17 5($/ )/2$7 '28%/( MDYD0DWK%LJ'HFLPDO MDYD0DWK%LJ'HFLPDO ERROHDQ E\WH VKRUW LQWHJHU ORQJ IORDW GRXEOH GRXEOH 7\SH-DYD 7\SH-DYD UHWRXUQpSDUJHW2EMHFW MDYD0DWK%LJ'HFLPDO MDYD0DWK%LJ'HFLPDO %RROHDQ,QWHJHU,QWHJHU,QWHJHU /RQJ )ORDW 'RXEOH 'RXEOH 'RLWrWUHXWLOLVpSRXUOHVYDOHXUV PRQpWDLUHVSOXW{WTXH)ORDW 0pWKRGHUHFRPPDQGpH DXOLHXGHJHW2EMHFW MDYD0DWK%LJ'HFLPDO JHW%LJ'HFLPDO MDYD0DWK%LJ'HFLPDO JHW%LJ'HFLPDO ERROHDQJHW%RROHDQ E\WH JHW%\WH VKRUWJHW6KRUW LQWHJHUJHW,QW ORQJJHW/RQJ IORDWJHW)ORDW GRXEOHJHW'RXEOH GRXEOH JHW'RXEOH

35 Correspondance de type SQL-Java (ii) 35 7\SH64/ &+$5 9$5&+$5 /21*9$5&+$5 %,1$5< 9$5%,1$5< /21*9$5%,1$5< '$7( 7,0( 7,0(67$03 6WULQJ 6WULQJ 6WULQJ 7\SH-DYD MDYDVTO'DWH MDYDVTO7LPH MDYDVTO7LPHVWDPS 7\SH-DYD UHWRXUQpSDUJHW2EMHFW 6WULQJ 6WULQJ 6WULQJ MDYDVTO'DWH MDYDVTO7LPH MDYDVTO7LPHVWDPS 0pWKRGHUHFRPPDQGpH DXOLHXGHJHW2EMHFW 6WULQJ JHW6WULQJ 6WULQJ JHW6WULQJ,QSXW6WUHDP JHW$VFLL6WUHDP,QSXW6WUHDP JHW8QLFRGH6WUHDP JHW%LQDU\6WUHDP MDYDVTO'DWHJHW'DWH MDYDVTO7LPHJHW7LPH MDYDVTO7LPHVWDPS JHW7LPHVWDPS

36 36 Nouveaux types dans JDBC3.0 BOOLEAN DATALINK Prise en chaque de données externes au SGBD (fichier d images, )

37 Les exceptions dans JDBC 64/([FHSWLRQ64/:DUQLQJ'DWD7UXQFDWLRQ 37 «WU\ ^ 3UHSDUHG6WDWHPHQWSVWPW FRQQSUHSDUH6WDWHPHQW 83'$7( (PSOR\H 6(7 VDODU\ " QDPH ":+(5( QXPHPS " SVPWVHW1XOO SVPWVHW6WULQJQRP SVPWVHW,QW QXP QE/LJQHV0RGLILHHV SVPWH[HFXWH8SGDWH ` FDWFK'DWD7UXQFDWLRQ H^ 'HVGRQQpHVRQWpWpWURQTXpHVRQGpFLGHGHQHULHQIDLUH ` FDWFK64/([FHSWLRQH^ 6\VWHPRXWSULQWOQHJHW0HVVDJH ZKLOHH HJHW1H[W([FHSWLRQ QXOO^ 6\VWHPRXWSULQWOQHJHW0HVVDJH ` `

38 Evolution de JDBC 38 JDBC 1.0 (Janvier 1996) JDBC 2.0 (Mars 1998) JDBC 3.0 (Septembre 2000) Extensions de JDBC 2.x CORE et SE (Standard Exception) Parcours avant-arrière d un ResultSet Mise à jour depuis un ResultSet Batch de plusieurs ordres SQL3 datatypes les types étendus UDT (SQL_DATA) et références REF les types longs (BLOB, CLOB) et les ARRAY Validation à deux phases des transactions (XA) Pool de connexion, Cache de lignes sur le client RowSet (Composants JavaBean), DataSource et JNDI

39 Echapement SQL dans les Statements 39 6WDWHPHQWVWPW FRQFUHDWH6WDWHPHQW VWPWVHW(VFDSH3URFHVVLQJWUXH 5HVXOW6HWUV HFKDSHPHQW GHZLOGFDUG64/BHW UV VWPWH[HFXWH4XHU\6(/(&7QXPHPS )520(03/2<( :+(5(QDPH /,.(??B^HVFDSH??` DSSHOjGHVIRQFWLRQVGX6*%' UV VWPWH[HFXWH4XHU\6(/(&7 QXPHPS )520(03/2<( :+(5( QDPH ^IQXVHU` MRLQWXUHH[WHUQH UV VWPWH[HFXWH4XHU\6(/(&7 QXPHPS680DPRXQW )520^RM (03/2<(/()7287(5-2,16$/(86,1*QXPHPS` DSSHOGHSURFpGXUHVWRFNpH ^" FDOO ^FDOO

40 Positionnement dans un ResultSet 40 Méthodes : first, last, beforefirst, afterlast, absolute, previous, relative, movetocurrentrow 6WDWHPHQWVWPW FRQFUHDWH6WDWHPHQW 5HVXOW6HW7<3(B6&52//B6(16,7,9( 5HVXOW6HW&21&85B83'$7($%/( 5HVXOW6HWUV VWPWH[HFXWH4XHU\6(/(&7)520(PSOR\H UVILUVW UVXSGDWH)ORDW6DODU\I UVDEVROXWH )ORDW VDO UVJHW)ORDW6DODU\VDO UVXSGDWH)ORDWVDO UVUHODWLYHUVSUHYLRXV UVXSGDWH)ORDW6DODU\I UVXSGDWH5RZ UVXSGDWH5RZ UVXSGDWH5RZ

41 41 Mise à jour depuis Java 6WDWHPHQWVWPW FRQFUHDWH6WDWHPHQW5HVXOW6HW7<3(B6&52//B6(16,7,9( 5HVXOW6HW&21&85B83'$7($%/( 5HVXOW6HWXSUV VWPWH[HFXWH4XHU\ 83'$7((PSOR\H6(76DODU\ :+(5(1XP(PS XSUVODVW XSUVXSGDWH)ORDW6DODU\ XSUVFDQFHO5RZ8SGDWHV XSUVXSGDWH)ORDW6DODU\ XSUVXSGDWH5RZ

42 Insertion et suppression depuis Java 42 6WDWHPHQWVWPW FRQFUHDWH6WDWHPHQW 5HVXOW6HW7<3(B6&52//B6(16,7,9( 5HVXOW6HW&21&85B83'$7($%/( 5HVXOW6HWXSUV VWPWH[HFXWH4XHU\6(/(&7)520(PSOR\H XSUVPRYH7R,QVHUW5RZDXWUHVPpWKRGHVILUVW ODVWEHIRUH)LUVW DIWHU/DVW DEVROXWH SUHYLRXV UHODWLYHPRYH7R&XUUHQW5RZ XSUVXSGDWH6WULQJ1DPH-RVHSK XSUVXSGDWH,QW XSUVXSGDWH)ORDW6DODU\I XSUVLQVHUW5RZ XSUVODVW XSUVGHOHWH5RZ

43 Batch de plusieurs ordres 43 FRQVHW$XWR&RPPLWIDOVH 6WDWHPHQWVWPW FRQFUHDWH6WDWHPHQW VWPWDGG%DWFK,16(57,172 (PSOR\H 9$/8(6-DFTXHVI VWPWDGG%DWFK,16(57,172 (PSOR\H 9$/8(63DXOI VWPWDGG%DWFK,16(57,172 (PSOR\H 9$/8(60DULH18// LQW XSGDWH&RXQWV VWPWH[HFXWH%DWFK 3UHSDUHG6WDWHPHQWSVWPW FRQSUHSDUHG6WDWHPHQW,16(57,172 (PSOR\H 9$/8(6" "" SVWPWVHW,QWSVWPWVHW6WULQJ3LHUUHSVWPWVHW)ORDWI SVWPWDGG%DWFK SVWPWVHW,QWSVWPWVHW6WULQJ 0DGHOHLQHSVWPWVHW1XOO SVWPWDGG%DWFK LQW SVWPWH[HFXWH%DWFK FRQFRPPLW

44 Interface RowSet 44 Composants JavaBean pour des sources de données tabulaires étend ResultSet Modèle d événement JavaBean addrowsetlistener, removerowsetlistener peut être connecté à un bean PieChart par exemple Implémentations possibles JDBCRowSet (JDBC/TCP) CachedRowSet (RMI/IIOP) XWLOLVDEOHVSDUGHV3'$ WebRowSet (HTTP/XML) YRLU>:KLWHHWDO@S

45 45 DataSource Motivation rendre les programmes indépendants des sources de données Datasource une instance regroupe les informations de connexion (driver, dburl, user, password) puis est enregistrée dans un service de répertoire via JNDI puis récupérée via JNDI &RQWH[WFW[ QHZ,QLWLDO&RQWH[W 'DWD6RXUFHGV 'DWD6RXUFHFW[ORRNXSMGEF(PSOR\HH'% &RQQHFWLRQFQ[ GVJHW&RQQHFWLRQ «FRQFORVH Sous-classes XADataSource, ConnectionPoolDataSource

46 Pool de Connexions JDBC 46 Motivation réutiliser les connexions JDBC entre plusieurs threads (servlets, entity beans, ) au lieu de les créer puis de les clore impact important sur les performances d un serveur Servlet, Classes PooledConnection représente une des connexions gérées par le pool ConnectionEventListener permet de notifier les opérations effectuées sur le PooledConnection ConnectionPoolDataSource permet de récupérer un PooledConnection via JNDI 3RRO&RQQHFWLRQJHW3RROHG&RQQHFWLRQ

47 47 Autres interfaces Array représente un tableau SQL Struct Ref 2EMHFWJHW$UUD\5HVXOW6HWJHW5HVXOW6HW représente une structure SQL JHW$WWULEXWHV0DS P6WULQJ JHW64/1DPH7\SH représente une référence à une structure SQL SQLInput et SQLOutput représentent un type user-defined sous la forme d un flot (entrée-sortie) LQWUHDG,QWYRLGZULWH,QWLQWDWWU SQLData assure une correspondance personnalisable pour les types user-defined

48 Java-Aware Database JHW2EMHFWHWVHW2EMHFW 49 SGBDOO et JDBMS 5HVXOW6HWUV VWPWH[HFXWH4XHU\6(/(&7)520 (PSOR\H UVQH[W (PSOR\H H (PSOR\HUVJHW2EMHFW (PSOR\HP QHZ (PSOR\H0DWKLHX 3UHSDUHG6WDWHPHQWSVWPW FRQSUHSDUHG6WDWHPHQW,16(57,172(PSOR\H(PSOR\HBW9$/8(" SVWPWVHW2EMHFWP SVWPWH[HFXWH8SGDWH 5HPDUTXHOHE\WHFRGHQ HVWSDVVWRFNpLOIDXWXWLOLVHU &ODVVIRU1DPH

49 Principe de Sécurité de JDBC 50 respecte les principes Sécurité de Java JDK 1.0 et 1.1 / en changement avec JDK1.2 Application / Thrusted Applets EDVHVORFDOHV VHUYHXU%' Untrusted Applets / Untrusted JDBC Driver FRQQH[LRQDXVHUYHXU%' VL #GXVLWHGHFKDUJHPHQW

50 Utilisation : Application et Applets Application -'%& fichiers locaux Applet -'%& fichiers locaux Serveur BD Serveur BD Serveur HTTPD 51 chargement

51 Utilisation : Servlets (i) Serveur BD fichiers locaux HTTPD -HHYHV-LJVDZ 52 chargement Applet Invocation CGI Servlet -'%&

52 Utilisation : Servlets (ii) 53 Applet fichiers locaux HTTPD VHUYOHW GULYHU-'%& Serveur BD Invocation CGI Servlet -'%& chargement HTTPD -HHYHV-LJVDZ

53 JDBC et ANT 54 Tâche ANT pour envoyer des ordres SQL Via un driver JDBC Exemple avec McKoi HFKR!4XHU\ WDEOHVHFKR! VTO GULYHU ^GULYHU`XUO ^XUO`XVHULG ^XVHULG`SDVVZRUG ^SDVVZRUG` SULQW \HVFODVVSDWKUHI VTOGULYHUSDWK! WUDQVDFWLRQ!>&'$7$> 6(/(&7)520 $LU&UDIW 6(/(&7)520)OLJKW WUDQVDFWLRQ!>&'$7$> 6(/(&7)5207LFNHW 6(/(&7)520 &XVWRPHU

54 Le module DBI de PERL (i) $FFqVDX[%'V SDUGHVVFULSWV3(5/ 55 KWWSZZZKHUPHWLFDFRPWHFKQRORJLD'%, XVHVWULFWXVH'%, P\ GEK '%,!FRQQHFW GEL2UDFOHRUFOWRWRSDVVHGHPRW ^5DLVH(UURU!$XWR&RPPLW!` GLH'DWDEDVHFRQQHFWLRQ QRWPDGH'%,HUUVWU P\ #QDPHV 'X0D P\ VTO TT^6(/(&7QDPHVDODU\ )520 HPSOR\HHV :+(5( QDPH /,.("` P\ VWK GEK!SUHSDUHVTO IRU#QDPHV ^ VWK!ELQGBSDUDPB'%,64/B9$5&+$5VWK!H[HFXWH P\QRPVDOVWK!ELQGBFROXPQV XQGHI?QRP?VDO ZKLOHVWK!IHWFK^SULQWQRPHVWSD\pVDO?Q` ` VWK!ILQLVKGEK!GLVFRQQHFW

55 Le module DBI de PERL (ii) 7UDQVDFWLRQV 56 XVHVWULFWXVH'%, P\ GEK '%,!FRQQHFW GEL2UDFOHRUFOMHIIUH\MHIIVSDVVZRUG ^5DLVH(UURU!$XWR&RPPLW!` GLH'DWDEDVHFRQQHFWLRQ QRWPDGH'%,HUUVWU P\ #UHFRUGV P\ VTO TT^,16(57,172 HPSOR\HHV 9$/8(6"""` P\ VWK GEK!SUHSDUHVTO IRU#UHFRUGV^ HYDO ^ VWK!ELQGBSDUDP#B!>@'%,64/B,17(*(5 VWK!ELQGBSDUDP#B!>@'%,64/B9$5&+$5 VWK!ELQGBSDUDP#B!>@'%,64/B,17(*(5 VWK!H[HFXWHGEK!FRPPLW ` LI#^ ZDUQ 'DWDEDVHHUURU'%,HUUVWU?QGEK!UROOEDFN` ` VWK!ILQLVKGEK!GLVFRQQHFW

56 Embedded SQL Motivations Oracle Pro*C Informix ESQL SQLJ

57 58 Motivation Syntaxe plus concise que SQL/CLI Analyse statique Contrôle de la Syntaxe et du Typage Typage curseur dépendant de la Métabase Précompilation Source PL + ordres SQL imbriqués PréCompilateur E-SQL dans PL Source PL + ordres SQL/CLI imbriqués ou ordres natifs Compilateur PL Exécutable Base MetaBase

58 59 Embedded SQL Sections spéciales (;(&64/%(*,1(1''(&/$5(6(&7,21 pour les déclarations de variables 3GL partagées avec SQL (;(&64/6(/(&7«,172«pour l exécution d une requête SQL Précompilateurs C Java Informix ESQL/C Oracle Pro*C SQLJ 2UDFOH7DQGHP,%06\EDVH Java Relational Binding $UGHQW6RIWZDUH

59 60 Exemple Pro*C EXEC SQL INCLUDE SQLCA; /* manipulation des erreurs */ EXEC SQL BEGIN DECLARE SECTION; char nom[21]; float salaire; EXEC SQL END DECLARE SECTION; scanf("%s",nom); EXEC SQL EXECUTE SELECT salary INTO :salaire FROM Employe WHERE name = :nom; END-EXEC; if (sqlca.sqlcode!= 0) VTOHUUPFPHVVDJHG HUUHXUVTOHUUPOVDORQJXHXU else printf(" Erreur d execution.\n %.70s\n", sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc); printf ("%s gagne %d $\n", nom, salaire);

60 Exemple de Curseur en Pro*C 61 EXEC SQL BEGIN DECLARE SECTION; char nom[21]; float salaire; EXEC SQL END DECLARE SECTION;... EXEC SQL DECLARE c CURSOR FOR SELECT name, salary FROM Employe WHERE salary > 10000; EXEC SQL OPEN CURSOR c; while(1) { EXEC SQL FETCH c INTO :nom, :salaire; if(not FOUND) break else printf ("%s gagne %d $\n", nom, salaire); } EXEC SQL CLOSE CURSOR c;

61 Informix ESQL/C 64 EXEC SQL DECLARE cursemp CURSOR FOR SELECT name, salary INTO QRPVDOQXOOBIODJ FROMEmploye FROM items FOR READ ONLY; EXEC SQL OPEN cursemp; while(sqlcode == 0) { EXEC SQL FETCH cursemp; if(sqlcode == 0) if (null_flag < 0)printf("%d gagne rien\n", nom) else printf("%s gagne %d$\n", nom, sal); } EXEC SQL CLOSE cursemp;

62 65 SQLJ - SQL Java SURSRVpSDU2UDFOH,%06\EDVH7DQGHPjO,62$16, Embedded-SQL dans Java vers un source Java avec des appels JDBC Exemple YRLG SULQWBVDODU\ 6WULQJQRPWKURZV 64/([FHSWLRQ^ LQW VDO VTOFRQWH[WFQ['5+ VTO ^6(/(&7VDODU\,172VDO)520(PSOR\H :+(5(QRP QDPH ` 6\VWHPRXWSULQWOQQRPHVWSD\pVDO VTO >FQ[5(&@^'(/(7()520(PSOR\H `VXUODFRQQH[LRQFQ[5(& `

63 SQLJ - Itérateurs 66 1RWLRQGHFXUVHXU VTO SXEOLF LWHUDWRU,WHU(PS 6WULQJ LQWGpFODUDWLRQG XQHFODVVHG LWpUDWHXU,WHU(PSLWHUGpFODUDWLRQG XQREMHW LWpUDWHXU 6WULQJQRPLQW VDOLQWF VTOLWHU ^6(/(&7QDPHVDODU\ )520(PSOR\H ` ZKLOH WUXH^ VTO ^)(7&+LWHU,172QRPVDO` LILWHUHQG)HWFKEUHDN LIF6\VWHPRXWSULQWOQQRPHVWSD\pVDO ` LWHUILUVWVHUHSRVLWLRQQHDXSUHPLHUUpVXOWDW ZKLOHLWHUQH[W^VHSRVLWLRQQHVXUOHVUpVXOWDWVHQSRVLWLRQLPSDLUH 6\VWHPRXWSULQWOQ LWHUQDPHHVWSD\pLWHUVDODU\ `

64 67 SQLJ - Autres Modification au niveau de l itérateur,whu(pslwhugpfodudwlrqg XQREMHW LWpUDWHXU VTOLWHU ^6(/(&7 QDPH VDODU\ )520 (PSOR\H `«VTO ^83'$7( (PSOR\H 6(7 VDODU\ VDODU\:+(5(&855(172)LWHU ` Valeurs Nulles MDYDVTO'DWHG QXOO LQW V QXOO VTO ^,16(57,172 (PSOR\H QDPH VDODU\ ELUWKGD\KREE\ 9$/8(6'XSRQGVG18//` Blocs et Atomicité YRLG 7UDQVIHUWLQW [LQW \LQW P^ VTO ^$720,&%(*,1 83'$7(&RPSWH6(7VROGH VROGHP:+(5(QXPFSW [ 83'$7(&RPSWH6(7VROGH VROGH P:+(5( QXPFSW \,16(57,1727UDQVIHUWVFSWFUHGLWFSWGHELWPRQWDQW9$/8(6[\P (1'``

65 SQLJ - Interopérabilité avec JDBC 68 Parcours d une requête SQLJ à partir d un Result6HW VTOMUXQWLPH5HVXOW6HW,WHUDWRULWHU VTOLWHU ^6(/(&7 QDPH VDODU\ )520 (PSOR\H ` MDYDVTO5HVXOW6HWUV LWHUJHW5HVXOW6HW ZKLOH UVQH[W^ 6WULQJV UVJHW6WULQJ IORDW I UVJHW)ORDWVDODU\ 6\VWHPRXWSULQWOQ VJDJQHI `UVFORVH Construction d un itérateur à partir d un ResultSet,WHU(PSLWHU 5HVXOW6HWUV VWPWH[HFXWH4XHU\6(/(&7QDPH VDODU\ )520(PSOR\H VTOLWHU UV ZKLOHLWHUQH[W^ 6\VWHPRXWSULQWOQ LWHUQDPHHVWSD\pLWHUVDODU\ `

66 69 JavaBlend Mapping transparent d objets Java avec les lignes d une base relationnelle Utilise l ODL de l ODMG pour la description

67 70 Extra JDBC p6spy : espion pour surveiller le «trafic» JDBC ObjectWeb XAPool : pool de connexions pour JDBC

68 SQL «Procédural» Motivations Architecture SQL3 / PSM Informix SPL Oracle PL/SQL Un nouveau venu : Java

69 Motivations pour un SQL procédural 72 Inconvénients Dynamic SQL et Middleware SQL (ODBC, JDBC,...) requête vérifiée à l exécution (runtime) typage faible variable hôte et curseur Embedded SQL in 3GL précompilation Dans les deux cas «impedance mismatch» code procédural du coté client (coût réseau) Begin For i=1 to 4 End Select... Client SQL SQL SQL SQL Serveur SQL BDR

70 Architecture Client-Serveur 73 Dynamic SQL et Embedded SQL Client Procédure anonyme Client Procédure stockée Client SQL SQL SQL PL/SQL RPC SQL Moteur PL/SQL Moteur PL/SQL Serveur SQL Procédure Stockée PL/SQL Serveur SQL Serveur SQL BDR BDR BDR

71 Architecture Client-Serveur 74 Triggers SQL Update, Delete, Insert Client Moteur PL/SQL Action PL/SQL d un Trigger Serveur SQL BDR

72 75 Standard et Langages Le standard SQL3 / PSM Les éditeurs Informix SPL Oracle PL/SQL Remarque Java est de plus en plus utilisé pour les «Java Stored Procedures» JVM sur le serveur BD

73 76 Utilisation dans Oracle Procédures anonymes Oracle SQL*PLUS, SQL*DBA Procédures Stockées Actions des Déclencheur Triggers Oracle SQL*MENU, SQL*FORMS

74 77 Bloc (Procédure) anonyme envoyé par le client au serveur Syntaxe DECLARE déclarations des variables locales -- optionel BEGIN suite d instructions PL/SQL ou de blocs anonymes EXCEPTION suite d instructions PL/SQL -- optionel ou de blocs anonymes END;. Run; -- provoque l exécution de la procédure anonyme

75 Typage des Variables 78 Type de Données SQL CHAR, VARCHAR2, NUMBER, DATE, BOOLEAN, LONG, RAW, ROWID Constructeur de type complexe RECORD, TABLE, TABLE of RECORDS ADT Abstract Data Type type «objet» Désignation du type d une colonne d un table QRPGHWDEOH!QRPGHFRORQQH!7<3(

76 79 Instructions Affectation Instructions SQL Requête SELECT, INSERT, UPDATE, DELETE Transaction COMMIT, ROLLBACK, SAVEPOINT Curseur DECLARE, OPEN, FETCH, CLOSE, WHERE CURRENT OF Structures de Contrôle imbrication illimitée IF...THEN...ELSIF...END IF boucles FOR, WHILE, LOOP et EXIT, GOTO Exceptions Exceptions internes au SGBD ou définies par l utilisateur Plusieurs niveaux d exception

77 Instructions 80 Affectation YDULDEOH! := YDULDEOHRXH[SUHVVLRQ!; SELECT YDULDEOH! INTO YDULDEOH! VXLWHGHODFODXVH )520:+(5(! ; Test IF FRQGLWLRQ! THEN LQVWUXFWLRQV! END IF; IF FRQGLWLRQ! THEN LQVWUXFWLRQV! ELSE LQVWUXFWLRQV! END IF; IF FRQGLWLRQ! THEN LQVWUXFWLRQV! ELSE LQVWUXFWLRQV! ELSIF FRQGLWLRQ! THEN LQVWUXFWLRQV! END IF; Boucles LOOP LQVWUXFWLRQV! EXIT WHEN FRQGLWLRQGHVRUWLH! LQVWUXFWLRQV! END LOOP; WHILE FRQGLWLRQ! LOOP LQVWUXFWLRQV! END LOOP; FOR YDULDEOH! IN YDOHXU! YDOHXU! LOOP LQVWUXFWLRQV! END LOOP;

78 Affection à partir d une requête 81 1 seule ligne retournée sinon erreur SELECT INTO DECLARE massesalairialeplus10000 Employe.salary%TYPE; BEGIN SELECT INTO FROM SUM(salary) massesalairialeplus10000 Employe WHERE salary > 10000; END; RETURNING DECLARE nomemploye.name%type, nouveausal Employe.salary%TYPE BEGIN END; UPDATEEmployeSET salary =salary * 1.1 WHERE numemp= 100 RETURNINGname, salary INTO nom, nouveausal;

79 Exceptions (i) 82 declare s Employe.salary%TYPE; --variable locale EHJLQ EHJLQ select salary into s from Employe where numemp = num; H[FHSWLRQ ZKHQ QRBGDWDBIRXQG EHJLQ s := -1; notifieerreur (num); -- Appel d une autre procédure HQG HQG H[FHSWLRQ ZKHQ QRBGDWDBIRXQG EHJLQ QRWLILH(UUHXUQXP -DPDLVDWWHLQW HQG ZKHQRWKHUVWKHQQXOO HQG

80 Exceptions (ii) 83 declare HB'HSDVVHPHQW (;&(37,21 GpFODUDWLRQG XQHH[FHSWLRQXWLOLVDWHXU s Employe.salary%TYPE; EHJLQ begin select sum(salary) into s from Employe; if s > then UDLVH HB'HSDVVHPHQW; end if; exception ZKHQ HB'HSDVVHPHQW begin RAISE_APPLICATION_ERROR(-20001, 'La masse salariale a explosé! ); end; when no_data_found begin notifieerreur2 (num); -- Jamais atteint end; when others then null; end;

81 84 Curseurs Déclaration CURSOR QRPFXU! IS UHTXrWH6(/(&7!; Usage Ouverture OPEN QRPFXU!; Parcours dans un boucle test d arrêt EXIT WHEN QRPFXU!%NOTFOUND; WHILE QRPFXU!%FOUND LOOP... récupération des valeurs dans des variables FETCH QRPFXU! INTO OLVWHGHYDULDEOHV! ; Fermeture CLOSE QRPFXU!;

82 Exemple de Curseur 85 CREATE OR REPLACE PROCEDURE augmentationsalaire( seuil INEmploye.salary%TYPE, augmentation IN NUMBER(2) ) AS sal Employe.salary%TYPE; num Employe.numemp%TYPE; &85625F,66(/(&7 VDODU\ QXPHPS )520 (PSOR\H; BEGIN 23(1F; )(7&+F,172VDO QXP; DWWHQWLRQjO RUGUHW\SHVFRPSDWLEOHV WHILE F)281' LOOP IF sal IS NOT NULL AND sal < seuil THEN UDPATE Employe SET salary = salary*(augmentation )/100 WHERE numemp = num; END IF; )(7&+F,172VDO QXP; END LOOP; &/26(F END;

83 Procédures et Fonctions 86 Plusieurs Types %ORFSURFpGXUHDQRQ\PH HQYR\pSDUOHFOLHQWDXVHUYHXU Procédure stockée, Fonction stockée stockées sur le serveur Procédure membre, Fonction membre méthodes membres des types objets Procédure externe écrit en LG3, utilise l API d Oracle OCI : 2UDFOH&DOO,QWHUIDFH peut être invoqué depuis PL/SQL Fonctionnalités générales Récursion illimitée Surcharge des paramètres Passage des paramètres avec des modes IN, OUT, INOUT

84 Procédures Stockées 87 Déclaration CREATE OR REPLACE PROCEDURE QRPSURF! ( OLVWDUJ! ) déclarations des variables locales (optionel) BEGIN suite d instructions PL/SQL EXCEPTIONS suite d instructions PL/SQL END;. Run; -- déclaration de la procédure stockée Liste des Arguments QRPDUJ PRGHW\SH PRGH : IN, OUT ou INOUT W\SH : de base (SQL92), NUMBER, ADT (SQL3) désignation du type d une colonne d un table WDEOH!FRORQQH!7<3( AS

85 Procédures Stockées 88 Exemple CREATE OR REPLACE PROCEDURE nouvelemploye( n INEmploye.name%TYPE, s INEmploye.salary%TYPE ) AS BEGIN INSERT INTOEmploye VALUE ( 123, n, s, NULL); END;. RUN; Invocation depuis un bloc anonyme BEGIN nouvelemploye( Martin, 10000); nouvelemploye( Dupont, 20000); END;. RUN;

86 Fonctions 89 create or replace function get_sal (numin Employe.numemp%TYPE) return Employe.salary%TYPE is s Employe.salary%TYPE; --variable locale begin begin select salary into s from Employe where numemp = num; exception when no_data_found begin s := -1; notifiererreur (num); -- Appel d une autre procédure end; when others then null; end; -- bloc imbriqué return s; end; -- function

87 Informix SPL 90 SPL (Stored Procedure Language) Définition de Procédures et de Fonctions Stockées CREATE PROCEDURE raise_prices( per_cent INT)... END PROCEDURE DOCUMENT "USAGE: EXECUTE PROCEDURE raise_prices(xxx)", "xxx = percentage from1-100"; CREATE FUNCTION find_group( id INT ) RETURNING INT, REAL;... END FUNCTION; DROP PROCEDURE raise_prices;

88 Informix SPL - Imbrication de bloc 91 CREATE PROCEDURE scope() DEFINE x,y,z INT; LET x = 5; LET y = 10; LET z = x + y; --zis15 BEGIN DEFINE x, q INT; DEFINE z CHAR(5); LET x = 100; LET q = x + y; -- q = 110 LET z = silly ; -- zreceivesacharacter value END LET y = x; -- yis now5 LET x = z; -- zis now15, not silly END PROCEDURE;

89 92 Informix SPL - Curseur CREATE_PROCEDURE increase_by_pct( pct INTEGER ) DEFINE s INTEGER; FOREACH sal_cursor FOR SELECT salary INTO s FROMemployee WHERE salary > LET s = s + s * ( pct/100 ); UPDATEemployeeSETsalary = s WHERE CURRENT OF sal_cursor; END FOREACH END PROCEDURE;

90 Informix SPL - Exception 93 BEGIN ON EXCEPTION IN (1) END EXCEPTION WITH RESUME -- do nothing significant (cont) BEGIN FOR i IN (1 TO 1000) FOREACH select..intoaa FROM t IF aa< 0 THEN RAISE EXCEPTION 1 ; -- emergency exit END IF END FOREACH END FOR RETURN 1; END --do something; -- emergency exit to this statement. TRACE Negative value returned ; RETURN -10; END

91 Java, Persistance et Bases de Données 96 Rendre persistant des objets Java 35% du travail du développeur passe dans le mapping Objet/JDBC Plusieurs solutions de stockage Sérialisation + Fichier / ne permet pas le partage et la recherche, n est pas incrémental JDBC API bas-niveau / impedance mismatch SQLJ Embedded SQL in Java / impedance mismatch JavaBlend JDO

92 97 JavaBlend OML Java de l ODMG2.0 ( classes additionnelles PersistentRoot et OID Dcollection,... Transparence au SQL Surcouche à JDBC

93 Java Data Objects (JDO) 98 Permet de rendre persistants des instances de n importe quelles classes Persistance transparente Accès direct aux membres Pas des méthodes set/get (accesseur/mutateur) Déréferenciation par. Instances persistante / transiente Architecture de base PersistenceManager Gère les accès, la sauvegarde, les transactions et les recherches entre les applications et les Data Stores Transaction Query Recherche sur critère. classes PersistenceCapable Interface que doit implémenter une classe dont des instances peuvent être persistentes

94 JDO - Query 99 Exemple class Employee{ String name; Integer salary; Employee manager; }... Collection extent = persistmngr.getextent(class.forname("employee"), false); Query q = persistmngr.newquery ( Class.forName("Employee"), // class extent, // candidates "salary > 50000" // filter ); Collection resultset = q.execute();

95 100 Java coté SGBD Java Stored Procedure/Function (Oracle) Procédures/Fonctions stockées écrites en Java (au lieu de PL/SQL) et utilisant JDBC ou SQLJ Java Triggers (Oracle) Actions des triggers écrites en Java (au lieu de PL/SQL) et utilisant JDBC ou SQLJ

96 101 Bibliographie - Autre PL/SQL Scott Urman, «Oracle8 PL/SQL Programming», ed Osborne-McGraw- Hill, Oracle Press Series, ISBN Steven Feuerstein, «Oracle PL/SQL Programming»,2nd Edition, ed O'Reilly. ISBN Steven Feuerstein, «Advanced Oracle PL/SQL Programming with Packages», ed O'Reilly, ISBN ADO La référence du programmeur ADO 2.0 (mi juin 99), Ed Eyrolles

97 102 Procédures stockées en.net Motivations Procédures et fonctions stockées Actions des Triggers ADT et Index sur ADT Fonctions complexes d agrégat Langage CLR : C#, Managed C++, J#, VB, Principes Chargement des assemblies Création des procédures

98 103 Chargement des assemblies CREATE ASSEMBLY <assembly id> FROM <path> WITH PERMISSION_SET=[SAFE EXTERNAL_ACCESS UNSAFE] CREATE ASSEMBLY Customer FROM 'C:\build\cust\customer.dll' 2 tables systèmes: sys.assemblies et sys.assembly_files

99 Création de procédures 104 CREATE PROCEDURE <procname> AS EXTERNAL NAME <assembly is>::<type name>::<method name> class Salary { public static int compute(int sal) { } } CREATE PROCEDURE int AS EXTERNAL NAME Customer::Salary::compute int EXEC ComputeSalary OUTPUT

100 105 Bibliographie JDBC S. White, M. Fisher, R. Cattell, G. Hamilton, M. Hapner, "JDBC API Tutorial and Reference", Ed Addison-Wesley, ISBN très complet (le plus complet) George Reese, «Database Programming with JDBC and Java with Packages», 1st Edition June 1997, ed O'Reilly, ISBN (ISBN en français) un peu incomplet Robert Orfali, Dan Harkey, «Client/Server Programming with Java and Corba», 2ème édition, 1998, Ed Wiley, ISBN X. Chapitres 23 à 26. mise en œuvre de JDBC en architecture multi-tiers benchmark TPC/AB avec JDBC Tutorial JDBC de

101 106 Bibliographie SQLJ Nirva Morisseau-Leroy, Martin Solomon, Gerald Momplaisir, Oracle9i SQLJ Programming, Oracle Press 2001, ISBN:

102 107 Bibliographie Revues DBMS Magazine DB2 Magazine Oracle On-line Magazine y sont publiés des «tips» sur PL/SQL

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail

Panorama des Bases de Données

Panorama des Bases de Données Panorama des Bases de Données Didier Donsez 8QLYHUVLWp-RVHSK)RXULHU*UHQREOH,0$,0$*/65$'(/( 'LGLHU'RQVH]#LPDJIU Didier Donsez, 1998-2002, Panorama des BDs 1 Le Modèle Relationnel 2 Un modèle de données

Plus en détail

Panorama des Bases de Données

Panorama des Bases de Données Panorama des Bases de Données Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes e-mail : donsez@univ-valenciennes.fr Le Modèle Relationnel Un modèle de données

Plus en détail

Java et les bases de données

Java et les bases de données Michel Bonjour http://cuiwww.unige.ch/~bonjour CENTRE UNIVERSITAIRE D INFORMATIQUE UNIVERSITE DE GENEVE Plan Introduction JDBC: API SQL pour Java - JDBC, Java, ODBC, SQL - Architecture, interfaces, exemples

Plus en détail

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS 1. Introduction Nous allons aborder la notion de surcouche procédurale au sein des SGBDS relationnels tels que Oracle (PLSQL)

Plus en détail

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes. Les Triggers SQL Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.fr 1 Sommaire Motivations Trigger Ordre Trigger Ligne Condition Trigger

Plus en détail

Programmation d application Bases de données avec Java

Programmation d application Bases de données avec Java Plan du document Programmation d application Bases de données avec Java INT Problématique slide 3 Correspondance diagramme de classe slide 4 UML vers schéma relationnel Programmation BD avec JDBC slide

Plus en détail

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

Bases de données avancées

Bases de données avancées Bases de données avancées Jean-Yves Antoine LI - Université François Rabelais de Tours Jean-Yves.Antoine@univ-tours.fr UFR Sciences et Techniques IUP SIR Blois Master 1 Bases de Données avancées IUP Blois,

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

TP Contraintes - Triggers

TP Contraintes - Triggers TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution

Plus en détail

Introduction à JDBC. Accès aux bases de données en Java

Introduction à JDBC. Accès aux bases de données en Java Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Introduction JDBC : Java Data Base Connectivity

Plus en détail

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives : ntroduction 1/28 2/28 Anne-Cécile Caron Licence MAGE - Bases de Données 2013-2014 Application base de données Pour le développeur : Quel est l environnement? type de client (mode client serveur, intranet,...)

Plus en détail

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation Base de données S. Lèbre slebre@unistra.fr Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :

Plus en détail

Accès aux bases de données

Accès aux bases de données 13 Accès aux bases de données Les bases de données fournissent un mécanisme de stockage persistant pour les données d application et dans bien des cas, elles sont essentielles au fonctionnement des applications.

Plus en détail

//////////////////////////////////////////////////////////////////// Administration bases de données

//////////////////////////////////////////////////////////////////// Administration bases de données ////////////////////// Administration bases de données / INTRODUCTION Système d informations Un système d'information (SI) est un ensemble organisé de ressources (matériels, logiciels, personnel, données

Plus en détail

Module BD et sites WEB

Module BD et sites WEB Module BD et sites WEB Cours 8 Bases de données et Web Anne Doucet Anne.Doucet@lip6.fr 1 Le Web Architecture Architectures Web Client/serveur 3-tiers Serveurs d applications Web et BD Couplage HTML-BD

Plus en détail

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans virginie.sans@irisa.fr A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

JDBC le langage Java XVI-1 JMF

JDBC le langage Java XVI-1 JMF JDBC Java Database Connectivity XVI-1 JDBC JDBC est une API Java (ensemble de classes et d'interfaces défini par SUN et les acteurs du domaine des BD) permettant d'accéder aux bases de données à l'aide

Plus en détail

Notes de cours : bases de données distribuées et repliquées

Notes de cours : bases de données distribuées et repliquées Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées

Plus en détail

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN Département Informatique Laboratoires de bases de données Laboratoire n 6 Programmation SQL par Danièle BAYERS et Louis SWINNEN Ce document est disponible sous licence Creative Commons indiquant qu il

Plus en détail

Les Bases de Données et l Objet Introduction

Les Bases de Données et l Objet Introduction Les Bases de Données et l Objet Introduction Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.fr Plan Définitions d un Objet Propriétés

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans virginie.sans@irisa.fr A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

TP Programmation Java / JDBC / Oracle

TP Programmation Java / JDBC / Oracle TP Programmation Java / JDBC / Oracle 1. Connectivité avec une base de données Oracle au travers de l interface JDBC L interface de programmation (API) JDBC (Java DataBase Connectivity) est une librairie

Plus en détail

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 ORACLE 10G DISTRIBUTION ET REPLICATION Distribution de données avec Oracle G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 1 Plan 12. Distribution de données 12.1 Génération des architectures C/S et Oracle

Plus en détail

Compte Rendu d intégration d application

Compte Rendu d intégration d application ISMA 3EME ANNEE Compte Rendu d intégration d application Compte Rendu Final Maxime ESCOURBIAC Jean-Christophe SEPTIER 19/12/2011 Table des matières Table des matières... 1 Introduction... 3 1. Le SGBD:...

Plus en détail

Cours Bases de données

Cours Bases de données Informations sur le cours Cours Bases de données 9 (10) séances de 3h Polycopié (Cours + TD/TP) 3 année (MISI) Antoine Cornuéjols www.lri.fr/~antoine antoine.cornuejols@agroparistech.fr Transparents Disponibles

Plus en détail

Bases de Données Avancées PL/SQL

Bases de Données Avancées PL/SQL 1/170 Bases de Données Avancées Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin, F-93017

Plus en détail

Configurer la supervision pour une base MS SQL Server Viadéis Services

Configurer la supervision pour une base MS SQL Server Viadéis Services Configurer la supervision pour une base MS SQL Server Référence : 11588 Version N : 2.2 : Créé par : Téléphone : 0811 656 002 Sommaire 1. Création utilisateur MS SQL Server... 3 2. Configuration de l accès

Plus en détail

Présentation du PL/SQL

Présentation du PL/SQL I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur

Plus en détail

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry Cours 3 Développement d une application BD 1 Plan du cours Gestion de la sécurité des données Optimisation des schémas de bases via la dénormalisation Utilisation de vues Placement du code applicatif dans

Plus en détail

Le langage SQL (première partie) c Olivier Caron

Le langage SQL (première partie) c Olivier Caron Le langage SQL (première partie) 1 Plan Le S.G.B.D. postgres Le langage SQL Langage de manipulation de données Langage de requêtes 2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley)

Plus en détail

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Introduction Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Forms 10g permet l utilisation du JAVA côté client et côté application

Plus en détail

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 Plan 1. Généralités sur la persistance des données dans les applications 2. La connection

Plus en détail

CHAPITRE 1 ARCHITECTURE

CHAPITRE 1 ARCHITECTURE 07/04/2014 Université des sciences et de la Technologie Houari Boumediene USTHB Alger Département d Informatique ADMINISTRATION ET TUNING DE BASES DE DONNÉES CHAPITRE 1 ARCHITECTURE RESPONSABLE DR K. BOUKHALFA

Plus en détail

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles) SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients

Plus en détail

Présentation du module Base de données spatio-temporelles

Présentation du module Base de données spatio-temporelles Présentation du module Base de données spatio-temporelles S. Lèbre slebre@unistra.fr Université de Strasbourg, département d informatique. Partie 1 : Notion de bases de données (12,5h ) Enjeux et principes

Plus en détail

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki Institut Supérieur de Gestion Cours pour 3 ème LFIG Java Enterprise Edition Introduction Bayoudhi Chaouki 1 Java EE - Objectifs Faciliter le développement de nouvelles applications à base de composants

Plus en détail

Devoir Data WareHouse

Devoir Data WareHouse Université Paris XIII Institut Galilée Master 2-EID BENSI Ahmed CHARIFOU Evelyne Devoir Data WareHouse Optimisation, Transformation et Mise à jour utilisées par un ETL Mr R. NEFOUSSI Année 2007-2008 FICHE

Plus en détail

Bases de Données relationnelles et leurs systèmes de Gestion

Bases de Données relationnelles et leurs systèmes de Gestion III.1- Définition de schémas Bases de Données relationnelles et leurs systèmes de Gestion RAPPELS Contraintes d intégrité sous Oracle Notion de vue Typage des attributs Contrainte d intégrité Intra-relation

Plus en détail

Architectures web/bases de données

Architectures web/bases de données Architectures web/bases de données I - Page web simple : HTML statique Le code HTML est le langage de base pour concevoir des pages destinées à être publiées sur le réseau Internet ou intranet. Ce n'est

Plus en détail

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW Groupe : 322 Exploitation des Banques de données 420-PK6-SL (1-2-1) Étape : 3 Professeur Nom: Marcel Aubin Courriel : maubin@cegep-st-laurent.qc.ca

Plus en détail

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées ANNEE 2014 / 2015 Désignation de l enseignement : Bases de données Nom du document : TP SQL sous PostgreSQL Rédacteur :

Plus en détail

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic Bases de données Page 1 de 11 1- Objectifs généraux Bases de données Prof. : Dzenan Ridjanovic acquérir les principes et concepts fondamentaux dans le domaine des bases de données; développer les connaissances

Plus en détail

Introduction aux Bases de Données Relationnelles Conclusion - 1

Introduction aux Bases de Données Relationnelles Conclusion - 1 Pratique d un : MySQL Objectifs des bases de données Où en sommes nous? Finalement, qu est-ce qu un? Modèle relationnel Algèbre relationnelle Conclusion SQL Conception et rétro-conception Protection de

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Oracle 8i sous Linux

Oracle 8i sous Linux Oracle 8i sous Linux Gilles Briard Éditions Eyrolles ISBN : 2-212-09135-4 2000 Avant-propos Linux est un système désormais éprouvé, comme son arrivée dans les entreprises l atteste. L engouement qu il

Plus en détail

Quelques aspects du Relationnel-Objet du SGBD Oracle

Quelques aspects du Relationnel-Objet du SGBD Oracle Département informatique de l IUT (de l université) de Bordeaux Cours de Bases de Données : présentation partielle d un SGBD RO 12 août 2015 Olivier Guibert Quelques aspects du Relationnel-Objet du SGBD

Plus en détail

IFT3030 Base de données. Chapitre 2 Architecture d une base de données

IFT3030 Base de données. Chapitre 2 Architecture d une base de données IFT3030 Base de données Chapitre 2 Architecture d une base de données Plan du cours Introduction Architecture Modèles de données Modèle relationnel Algèbre relationnelle SQL Conception Fonctions avancées

Plus en détail

Attaques applicatives

Attaques applicatives Attaques applicatives Attaques applicatives Exploitation d une mauvaise programmation des applications Ne touche pas le serveur lui-même mais son utilisation/ configuration Surtout populaire pour les sites

Plus en détail

Gestion de stock pour un magasin

Gestion de stock pour un magasin Département d Informatique Université de Fribourg, Suisse http://diuf.unifr.ch Gestion de stock pour un magasin Stock online utilise ASP/MS-Access DO Thi Tra My No étudiant : 05-333-750 Travail de séminaire

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

LES ACCES ODBC AVEC LE SYSTEME SAS

LES ACCES ODBC AVEC LE SYSTEME SAS LES ACCES ODBC AVEC LE SYSTEME SAS I. Présentation II. SAS/ACCESS to ODBC III. Driver ODBC SAS IV. Driver ODBC SAS Universel V. Version 8 VI. Références I. Présentation Introduction ODBC, qui signifie

Plus en détail

INTRODUCTION AUX BASES de DONNEES

INTRODUCTION AUX BASES de DONNEES INTRODUCTION AUX BASES de DONNEES Équipe Bases de Données LRI-Université Paris XI, Orsay Université Paris Sud Année 2003 2004 1 SGBD : Fonctionnalités et Principes Qu est qu une base de données? Un Système

Plus en détail

Corrigés détaillés des exercices

Corrigés détaillés des exercices Corrigés détaillés des exercices Diagramme des tables objet La figure suivante vous aidera dans la compréhension des manipulations des objets de la base. Client_type Client num nom adresse {telephone_vry}

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles Types d applications pour la persistance Université de Nice Sophia-Antipolis Version 0.9 28/8/07 Richard Grin Toutes les applications n ont pas une complexité qui nécessite une architecture n- tiers Ce

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Module 1 : Programmer une application informatique Durée

Plus en détail

Les bases de données

Les bases de données Les bases de données Introduction aux fonctions de tableur et logiciels ou langages spécialisés (MS-Access, Base, SQL ) Yves Roggeman Boulevard du Triomphe CP 212 B-1050 Bruxelles (Belgium) Idée intuitive

Plus en détail

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués Architecture JEE. Objectifs attendus Serveurs d applications JEE Systèmes distribués Architectures JEE Normes JEE couches logicielles, n-tiers framework JEE et design patterns 2007/02/28 Eric Hébert.eheb@yahoo.fr

Plus en détail

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données Base de Données Cours Introductif Base de Données Quelques chiffres Évolution annuelle moyenne 2004/2000 15% +20% 12% 5% 0.5% 2000 2004 L3G IA SG mono poste : Part de marché 5% 5% 10% Paradox 65% SG 15%

Plus en détail

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours Bilan : Des vues à PL/SQL corrigé Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Cas exemple 2 Les tables... 3 Vues et index 4 Privilèges 5 Fonctions

Plus en détail

Hala Skaf-Molli. Nancy-Université skaf@loria.fr 14 mai 2007

Hala Skaf-Molli. Nancy-Université skaf@loria.fr 14 mai 2007 Bases de données avancées Hala Skaf-Molli Maître de Conférence Nancy-Université skaf@loria.fr 14 mai 2007 1 Introduction Dans ce cours, nous allons étudier les bases de données Orienté objets, bases de

Plus en détail

La base de données XML exist. A. Belaïd

La base de données XML exist. A. Belaïd La base de données XML exist Introduction Qu est-ce-que exist? C est une base de donnée native, entièrement écrite en Java XML n est pas une base de données en soi Bien qu il possède quelques caractéristiques

Plus en détail

Auto-évaluation Oracle: cours de base

Auto-évaluation Oracle: cours de base Auto-évaluation Oracle: cours de base Document: F0475Test.fm 14/01/2008 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION ORACLE: COURS DE

Plus en détail

1. Introduction. Introduction au langage SQL3 (SQL 99) Plan. Sources du cours. 1. Introduction La norme SQL3 et ses composants

1. Introduction. Introduction au langage SQL3 (SQL 99) Plan. Sources du cours. 1. Introduction La norme SQL3 et ses composants Introduction au langage SQL3 (SQL 99) Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU) Ecole Polytechnique Universitaire de Marseille Avril 2013 La norme SQL3 Les triggers : normalisation

Plus en détail

Oracle Le langage procédural PL/SQL

Oracle Le langage procédural PL/SQL Oracle Le langage procédural PL/SQL Denis Roegel roegel@loria.fr IUT Nancy 2 1998/1999 Sommaire 1 Introduction 3 2 Création de packages 3 2.1 Procédures groupées.........................................

Plus en détail

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais BTS S.I.O. 2012-2013 PHP OBJET Module SLAM4 Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais Table des matières 1 But... 3 2 Les bases :... 3 3 Utilisation d'une classe : Instanciation...3

Plus en détail

Bases de Données. Stella MARC-ZWECKER. stella@unistra.u-strasbg.fr. Maître de conférences Dpt. Informatique - UdS

Bases de Données. Stella MARC-ZWECKER. stella@unistra.u-strasbg.fr. Maître de conférences Dpt. Informatique - UdS Bases de Données Stella MARC-ZWECKER Maître de conférences Dpt. Informatique - UdS stella@unistra.u-strasbg.fr 1 Plan du cours 1. Introduction aux BD et aux SGBD Objectifs, fonctionnalités et évolutions

Plus en détail

PDO : PHP Data Object 1/13

PDO : PHP Data Object 1/13 PDO : PHP Data Object 1/13 Tous ne sont que des extensions... Les fonstions mysql_* : API mysql Les fonctions mysqli_* aussi Il en est de même pour PDO PDO (avec le pilote PDO MySQL Driver et Extension

Plus en détail

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing Présentation d Oracle 10g Chapitre VII Présentation d ORACLE 10g 7.1 Nouvelles fonctionnalités 7.2 Architecture d Oracle 10g 7.3 Outils annexes 7.4 Conclusions 7.1 Nouvelles fonctionnalités Gestion des

Plus en détail

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France Développement d applications Internet et réseaux avec LabVIEW Alexandre STANURSKI National Instruments France Quelles sont les possibilités? Publication de données Génération de rapports et de documents

Plus en détail

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC Sommaire 1. Objectifs et intérêts... 2 2. Intégrer le driver SQL Server dans SJSAS 9... 2 2.1. Télécharger

Plus en détail

Qui est Sybase ianywhere?

Qui est Sybase ianywhere? Sybase s ianywhere s Advantage Database Server Qui est Sybase ianywhere? Sybase ianywhere Sybase est la plus grande entreprise de logiciels et services exclusivement focalisée sur la gestion et la mobilisation

Plus en détail

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications P.-A. Sunier, HEG-Arc Neuchâtel avec le concours de J. Greub pierre-andre.sunier@he-arc.ch http://lgl.isnetne.ch/

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI anis.bach@isg.rnu.tn

Plus en détail

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Le langage SQL pour Oracle - partie 1 : SQL comme LDD Le langage SQL pour Oracle - partie 1 : SQL comme LDD 1 SQL : Introduction SQL : Structured Query Langage langage de gestion de bases de donn ees relationnelles pour Définir les données (LDD) interroger

Plus en détail

633-2.2 Dialogue avec la base de données

633-2.2 Dialogue avec la base de données 633-2.2 Dialogue avec la base de données 3. Manipulation des données avec un langage hôte Cedric.Baudet@he-arc.ch 1 Références Filière Bachelor of Science en informatique de gestion Domaine Technologies

Plus en détail

1. Introduction. Bases de données Réparties, Fédérées et Réplication. Plan. Bibliographie du cours

1. Introduction. Bases de données Réparties, Fédérées et Réplication. Plan. Bibliographie du cours Bases de données Réparties, Fédérées et Réplication Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU) Ecole Polytechnique Universitaire de Marseille Avril 2013 1. Répartition & Fédération 2.

Plus en détail

Vulgarisation Java EE Java EE, c est quoi?

Vulgarisation Java EE Java EE, c est quoi? Paris, le 1 Février 2012 Vulgarisation Java EE Java EE, c est quoi? Sommaire Qu est ce que Java? Types d applications Java Environnements Java Versions de Java Java EE, c est quoi finalement? Standards

Plus en détail

SQL Historique 1982 1986 1992

SQL Historique 1982 1986 1992 SQL Historique 1950-1960: gestion par simple fichier texte 1960: COBOL (début de notion de base de données) 1968: premier produit de sgbdr structuré (IBM -> IDMS) 1970-74: élaboration de l'outil d'analyse

Plus en détail

Implémentation des SGBD

Implémentation des SGBD Implémentation des SGBD Structure générale des applications Application utilisateur accédant à des données d'une base Les programmes sous-jacents contiennent du code SQL Exécution : pendant l'exécution

Plus en détail

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 12 : Concurrence d accès Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Accès concurrents Définitions Verrous Collisions Niveaux de cohérence Blocage

Plus en détail

BD réparties. Bases de Données Réparties. SGBD réparti. Paramètres à considérer

BD réparties. Bases de Données Réparties. SGBD réparti. Paramètres à considérer Bases de Données Réparties Définition Architectures Outils d interface SGBD Réplication SGBD répartis hétérogènes BD réparties Principe : BD locales, accès locaux rapides accès aux autres SGBD du réseau

Plus en détail

PL langage de programmation côté serveur. SQL à la base : types, expressions, requêtes

PL langage de programmation côté serveur. SQL à la base : types, expressions, requêtes Introduction à PL langage de programmation côté serveur installation nécessaire : CREATE LANGUAGE ou createlang interprété : erreurs de syntaxe possibles à l exécution SQL à la base : types, expressions,

Plus en détail

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données II Objets avancés dans les bases de données OBJECTIFS 2.1. NOTIONS 2.1.1.

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

Module BDR Master d Informatique (SAR)

Module BDR Master d Informatique (SAR) Module BDR Master d Informatique (SAR) Cours 6- Bases de données réparties Anne Doucet Anne.Doucet@lip6.fr 1 Bases de Données Réparties Définition Conception Décomposition Fragmentation horizontale et

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

Plus en détail

Olivier Mondet http://unidentified-one.net

Olivier Mondet http://unidentified-one.net T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage

Plus en détail

Auto-évaluation Aperçu de l architecture Java EE

Auto-évaluation Aperçu de l architecture Java EE Auto-évaluation Aperçu de l architecture Java EE Document: f1218test.fm 22/03/2012 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION APERÇU

Plus en détail

Systèmes répartis. Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine. Systèmes répartis p.1/49

Systèmes répartis. Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine. Systèmes répartis p.1/49 Systèmes répartis Fabrice Rossi http://apiacoa.org/contact.html. Université Paris-IX Dauphine Systèmes répartis p.1/49 Systèmes répartis Définition très large : un système réparti est système informatique

Plus en détail