0DVWqUHV,$'%$
$QQpHVFRODLUH
%DVHVGHGRQQpHV HW'pYHORSSHPHQW G¶DSSOLFDWLRQVSHUVLVWDQWHV 0RWVFOpV
$SSOLFDWLRQSHUVLVWDQWH
(PEHGGHG 64/
3URFHGXUDO 64/
64/&DOO/HYHO,QWHUIDFH± 2'%&±
-'%&
5HWRXUVXUO¶REMHFWLI 6*%'XQPrPHORJLFLHOTXLSHUPHW« 'HVWUXFWXUHUHWGHVWRFNHUOHVGRQQpHV© LQWHOOLJHPPHQW ª« 'HOHVLQWHUURJHU© HIILFDFHPHQW ª« 'HOHVPRGLILHU© FRUUHFWHPHQW ª« 'DQVXQHQYLURQQHPHQWPXOWLXWLOLVDWHXUV« 4XHOOHRXYHUWXUHYHUVO¶H[WpULHXU" 4XHOOHVLQWHUIDFHVSURJUDPPDWLTXHVDX[6*%'" -'%& /¶LPSHGDQFHPLVPDWFKHWO¶RULHQWpREMHW
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
0DVWqUHV,$'%$
$QQpHVFRODLUH
5HWRXUVXUO¶H[HPSOH 0\64/ 3K3 ,QWpUrW 3XLVVDQFHHWIDFLOLWpG¶XWLOLVDWLRQ
3K3 /DQJDJHVLPSOHW\SDJHG\QDPLTXHHWF
$FFqVjOD%'
$UFKL&6$SSOLFDWLRQ© GLVWDQWH ª
$3,64/ ,PEULFDWLRQDYHF+70/SURWRFROH+773
5pYpODWHXU 3RLQWIRUWDUFKLWHFWXUH 3RLQWIDLEOHLQFRKpUHQFHGHVPRWHXUVG¶H[pFXWLRQ
PRGqOHVGHGRQQpHVHQFDVGHODQJDJHW\Sp
,QWHUDFWLRQ6*%'/3 3ULQFLSHOHFWXUHPLVHjMRXUpFULWXUH /D%'DVVXUHODSHUVLVWDQFH &RSLHGHVGRQQpHVSHUVLVWDQWHVGDQVOHVVWUXFWXUHVGX SURJUDPPH !WUDQVLHQWHV /HSURJUDPPHPHWjMRXUOHVGRQQpHV WUDQVLHQWHV 5HFRSLHGHVGRQQpHVWUDQVLHQWHV VXUOH6*%' 4XHVWLRQV 3RUWDELOLWp6*%' '\QDPLFLWp VWUXFWXUHVGHGRQQpHV 'LVWULEXWLRQGHVGRQQpHVHWGHVWUDLWHPHQWV
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
0DVWqUHV,$'%$
$QQpHVFRODLUH
Embedded SQL’86
EXEC SQL INCLUDE SQLCA; EXEC SQL BEGIN DECLARE SECTION; char *dbaccess="bda10/bda@T:zazie:o1"; VARCHAR ename[50]; VARCHAR job[40]; VARCHAR dname[40]; EXEC SQL END DECLARE SECTION; char Buf[1024]; connection(); EXEC SQL DECLARE csa CURSOR FOR SELECT e.ename, e.job, d.dname FROM emp e, dept d, WHERE e.deptno = d.deptno ORDER BY d.dname, e.ename;
EXEC SQL OPEN csa ; val=0; /* compteur du nombre de tuples */ while (1) { EXEC SQL WHENEVER NOT FOUND DO break; EXEC SQL FETCH csa INTO :ename, :job, :dname; i=ename.len; while(ename.arr[i-1]==’ ’) i--; ename.arr[i]=’\0’; printf("%s # ", ename.arr); i=job.len; while(job.arr[i-1]==’ ’) i--; job.arr[i]=’\0’; printf("%s # ", job.arr); i=dname.len; while(dname.arr[i-1]==’ ’) i--; dname.arr[i]=’\0’; printf("%s \n ", dname.arr); val++; } EXEC SQL CLOSE csa; printf("%d\n",val); deconnection();
64/¶± HPEHGGHG 64/ Source C-embedded SQL .pc
(PEHGGHG 64/ /HFRGHVRXUFHHVW QRUPDOLVp )RQFWLRQVGHODOLEUDLULH QRQQRUPDOLVpHV 5HTXrWHVVWDWLTXHV 3UpFRPSLODWHXU SURSULpWDLUH &RPSLODWLRQHQ
SUpVHQFHGX6*%'
Précompilateur SQL
Métabase DB call interfaces
Code C "pur" .c
Compilateur C
Code objet .o
Editeur de liens
DB library
Exécutable
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
0DVWqUHV,$'%$
$QQpHVFRODLUH
8QHORQJXHVXLWHGHVWDQGDUG 6WDQGDUG$16, ,62 (PEHGGHG64/64/&2'( 64/;2SHQ6$* 64/G\QDPLTXH 'LFWLRQQDLUH GHGRQQpHV 64/,62 $16, 64/67$7( 64/SURFpGXUDO 64/&/, 64/$'7
64/¶FODULILHHWSUpFLVH 64/DWWHQGXHGHSXLV SDJHVSRXU64/¶ SDUWLHVGHVH[WHQVLRQV 64/)UDPHZRUN64/)RXQGDWLRQV64/&/,64/360 64/%LQGLQJV 64/;$WUDQVDFWLRQVGLVWULEXpHV 64/7HPSRUDO64/0(' GRQQpHVQRQ64/ 64/2%-
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
0DVWqUHV,$'%$
$QQpHVFRODLUH
&RQIRUPLWpj64/¶ QLYHDX[GHFRQIRUPLWpjODQRUPH &RUH 64/VXSSRUW
IUDPHZRUN FRUHIRXQGDWLRQV © ELQGLQJ VW\OH ª
(QKDQFHG 64/VXSSRUW
64/&/,RX64/360RX64/%LQGLQJVRXDXPRLQV64/ SDFNDJHGDWHWLPHLQWHJULW\2/$3360&/, 64/)ODJJHU
([FUHDWH LQGH[
64/SUpYX 64/00 64/5'$
64/¶3HUVLVWHQW VWRUHG PRGXOH64/360 3URFpGXUHIRQFWLRQPpWKRGH $MRXW64/ %ORFVGH FRQWUROHV
'pFODUDWLRQHWDIIHFWDWLRQGHYDULDEOHV *HVWLRQGH]RQHVGHGLDJQRVWLFV
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
,IWKHQHOVHERXFOHVH[FHSWLRQHWF
,QIRVVXUO¶pWDWGXSURFHVVXV
0DVWqUHV,$'%$
$QQpHVFRODLUH
64/¶64/&DOO /HYHO LQWHUIDFH64/&/,
&RXFKHORJLFLHOOHTXLSHUPHWO¶LQVHUWLRQGHFRPPDQGHV64/FRPPH SDUDPqWUHVGHIRQFWLRQV
2QVWDQGDUGLVHOHVSURWRW\SHVGHODELEOLRWKqTXHGX6*%'pGLWLRQGH OLHQ
2QpYLWHODSUpFRPSLODWLRQ /H6*%'HVWVpOHFWLRQQpjO H[pFXWLRQjSDUWLUG XQILFKLHUGH FRQILJXUDWLRQ &KDUJHPHQWG\QDPLTXHGHODOLEUDLULHGX6*%'DFFpGp
([HPSOH-'%& RQSHXWWUDYDLOOHUDYHFSOXVLHXUV6*%'jODIRLV
'HX[VROXWLRQVFRPSOpPHQWDLUHV« 8QHTXHVWLRQFUXFLDOHRH[pFXWHUOHVWUDLWHPHQWV"*DUWQHU JURXS 3UpVHQWDWLRQ
3UpVHQWDWLRQ
/RJLTXH
GLVWULEXpH
GLVWDQWH
DSSOLFDWLYH GLVWULEXpH
6HUYHXU
'RQQpHV GLVWDQWHV
*HVWLRQ
*HVWLRQ
*HVWLRQ
*HVWLRQ
GH
GH
GH
GH
GRQQpHV
GRQQpHV
GRQQpHV
GRQQpHV
7UDLWHPHQW
7UDLWHPHQW
'RQQpHV GLVWULEXpHV
*HVWLRQ GH GRQQpHV
*HVWLRQ
7UDLWHPHQW
GH GRQQpHV
3UpVHQWDWLRQ
3UpVHQWDWLRQ
7UDLWHPHQW
3UpVHQWDWLRQ
3UpVHQWDWLRQ
7UDLWHPHQW
3UpVHQWDWLRQ
7UDLWHPHQW
3UpVHQWDWLRQ
&OLHQW
)DFHOLIWLQJ
)XQFWLRQ VKLSSLQJ
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
'DWDVKLSSLQJ
0DVWqUHV,$'%$
$QQpHVFRODLUH
«(WLQGXVWULHOOHV /HVDUFKLWHFWXUHV PXOWLQLYHDX[VHJpQpUDOLVHQW (OOHVSHUPHWWHQWO¶LQWpJUDWLRQGHVVWDQGDUGV± V\VWqPHV G¶LQIRUPDWLRQRXYHUWV
64/SRXUOHVEDVHVGHGRQQpHV ;0/VWDQGDUGpPHUJHDQWSRXUO¶(', HWF
/HVSUREOqPHVFKDQJHQW
&RWGHJHVWLRQGHVDUFKLWHFWXUHV &RWGHODPDLQWHQDQFHGHVDSSOLFDWLRQV
3UpVHQWDWLRQGH-DYD 8QWUqVJURVVXFFqV3RXUTXRL" 'HVGRPDLQHVG¶XWLOLVDWLRQGHODWHFKQRORJLH-DYDWUqV YDULpV« 8QVRXWLHQWUqVIRUWGHVJUDQGVDFWHXUVGXPLOLHX LQIRUPDWLTXH 'HVUDLVRQVWHFKQLTXHV«
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
/DQJDJHRULHQWpREMHW 2ULHQWp:HEHW%DVHVGHGRQQpHV
0DVWqUHV,$'%$
$QQpHVFRODLUH
+LVWRULTXH /DQJDJHUpFHQWOLpjO¶pYROXWLRQG¶,QWHUQHW SURMHW2$.6XQ0LFURV\VWHPV /DQJDJHSRXU IDYRULVHUODFRPPXQLFDWLRQGHVDSSDUHLOVGRPRWLTXHV DEDQGRQG¶2$.PDLVUHSULVHGHODWHFKQRORJLHSRXU O¶DGDSWHUjXQQRXYHDXODQJDJHjGHVWLQDWLRQG¶,QWHUQHW DQQRQFHRIILFLHOOHOH-'. YHUVLRQDFWXHOOHOH-'.
-'. -'.-DYD'HYHORSPHQW .LW /HODQJDJHGHSURJUDPPDWLRQHWVRQFRPSLODWHXU /DPDFKLQHYLUWXHOOHSRXUO¶H[pFXWLRQGHVSURJUDPPHV /HV$3,$SSOLFDWLRQ3URJUDPPLQJ,QWHUIDFH ELEOLRWKqTXHV GHFODVVHVHQVWDQGDUG! 8QHQVHPEOHG¶RXWLOVMDYDMDYDFMGEMDYDGRFMDU«
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
0DVWqUHV,$'%$
$QQpHVFRODLUH
'RPDLQHVG¶XWLOLVDWLRQ /HODQJDJHHVWFRQoXGHWHOOHPDQLqUHTXHOHV
DSSOLFDWLRQVGpYHORSSpHVVRLWIDFLOHPHQW FRPPXQLFDQWHV
,QWHUQHW
*pQpUDWLRQGHFRQWHQX:HE6HUYOHWV-63 &RGHPRELOHDSSOHWV-DYD:HE6WDUW &RPPXQLFDWLRQGHVSURJUDPPHVYLDOHUpVHDX 50,
$FFqVDX[EDVHVGHGRQQpHV-'%& )RUPDWGHFRPSRVDQWVVHUYHXU(-%
6RXWLHQGHVJUDQGVDFWHXUV 6XSSRUWGX-'.VXUODPDMRULWpGHVV\VWqPH
G¶H[SORLWDWLRQVDFWXHOV 8QL[6RODULVOLQX[« :LQGRZV 0DF26
$FFqVDXEDVHVGHGRQQpHV 6WUDWpJLH-DYDG¶2UDFOH /DSOXSDUWGHV%'GLVSRVHQWGHSLORWHV-'%&
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
0DVWqUHV,$'%$
$QQpHVFRODLUH
5DLVRQVWHFKQLTXHVOH ODQJDJH /DQJDJHRULHQWpREMHWFRPPH& PDLVTXLpYLWH
FHUWDLQHVGLIILFXOWpV
+pULWDJHVLPSOH 3DVGHSRLQWHXUV 7\SDJHIRUW *HVWLRQDXWRPDWLTXHGHODPpPRLUHSDVGHIUHH QLGH PDOORF
%LEOLRWKqTXHVWDQGDUGWUqVpWHQGXHTXLSHUPHWO¶DFFqV
jGHPXOWLSOHVIRQFWLRQQDOLWpVJUkFHjGHV$3,GH KDXWQLYHDX /DQJDJHVLPSOHjSUHQGUHHQPDLQPDLVSDVOLPLWp
5DLVRQVWHFKQLTXHV O¶HQYLURQQHPHQW /DQJDJHLQWHUSUpWpSRUWDELOLWpGXODQJDJH Code Java Machine virtuelle
Système d'exploitation
java
javac
SURJMDYD
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
SURJFODVV
machine virtuelle Java
:LQGRZV
machine virtuelle Java
8QL[
machine virtuelle Java
(WF
0DVWqUHV,$'%$
$QQpHVFRODLUH
-'%&LQWURGXFWLRQ
,QWHUIDFH-DYDSRXUOD FRQQH[LRQjGHVEDVHVGH GRQQpHVUHODWLRQQHOOHV $3,-DYDSRXUOH64/ G\QDPLTXH
Embauche d’un nouvel employé : - saisie des renseignements - stockage
'ULYHU-'%&
-'%&UpVXPp 'ULYHU0DQDJHU
&RQQHFWLRQ
UHJLVWHU'ULYHU'ULYHU
FUHDWH6WDWHPHQW SUHSDUH6WDWHPHQWVTO
'ULYHUV
SUHSDUH&DOOVTO JHW&RQQHFWLRQXUO
6WDWHPHQW
3UHSDUHG6WDWHPHQW
H[HFXWH4XHU\VTO
H[HFXWH4XHU\
H[HFXWH8SGDWHVTO
H[HFXWH8SGDWH
&DOODEOH6WDWHPHQW
([HFXWH
5HVXOW6HW
JHW;;;LQW_QRPBFRO
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
LQW6WULQJ
0DVWqUHV,$'%$
$QQpHVFRODLUH
/HVFODVVHV6WDWHPHQWHW 5HVXOW6HW 'ULYHU0DQDJHU
&RQQHFWLRQ
UHJLVWHU'ULYHU'ULYHU
FUHDWH6WDWHPHQW SUHSDUH6WDWHPHQWVTO
'ULYHUV
SUHSDUH&DOOVTO JHW&RQQHFWLRQXUO
6WDWHPHQW
3UHSDUHG6WDWHPHQW
H[HFXWH4XHU\VTO
H[HFXWH4XHU\
H[HFXWH8SGDWHVTO
H[HFXWH8SGDWH
&DOODEOH6WDWHPHQW
([HFXWH
5HVXOW6HW
JHW;;;LQW_QRPBFRO
LQW6WULQJ
/DFODVVHVWDWHPHQW
6WDWHPHQW 8QHGHVFODVVHVUHSUpVHQWDQWGHVLQVWUXFWLRQV64/&HOOHFLODSOXV VLPSOHSHUPHWG¶H[pFXWHUOHVLQVWUXFWLRQV64/pOpPHQWDLUHV
PpWKRGHVSULQFLSDOHV
H[HFXWH8SGDWH'(/(7()5200$B7$%/(:+(5(120
¶;¶
3RXUGHVLQVWUXFWLRQV64/GHPLVHjMRXUUHQYRLHOHQRPEUHGHUDQJpHV PRGLILpHV
H[HFXWH4XHU\6(/(&7 )5200$B7$%/( 3RXUGHVDSSHOV64/FHQVpVH[WUDLUHGHVGRQQpHVGHODEDVH5HQYRLHXQ 5HVXOW6HWHQVHPEOHGHUpVXOWDWV
H[HFXWH TXDQGLOH[LVWHGHVGRXWHVVXUO¶LQVWUXFWLRQ64/WUDLWpHUHTXrWH RXPLVHjMRXU GDQVOHFDVG¶LQVWUXFWLRQV64/JpQpUpHVG\QDPLTXHPHQW 5HQYRLHWUXHV¶LOH[LVWHXQ5HVXOW6HW
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
0DVWqUHV,$'%$
$QQpHVFRODLUH
/DFODVVH5HVXOW6HW
5HVXOW6HW JqUHXQWDEOHDXGHOLJQHVFRQWHQDQWOHVUpVXOWDWVG¶XQHUHTXrWHVRXVOD IRUPHG¶XQHRXGHSOXVLHXUVUDQJpHV
3OXVLHXUVPpWKRGHVSRXUHQLVROHUOHVFRORQQHVGHODIRUPH
W\SHJHW7\SHLQW _6WULQJ QXPpURRXQRPGHODFRORQQH
¬XQLQVWDQWGRQQpXQ5HVXOWVHWQHFRQWLHQWTX¶XQHUDQJpH/D PpWKRGHnext() SHUPHWGHSDVVHUjODUDQJpHVXLYDQWH(OOHUHQYRLH
true
V¶LOH[LVWHHQFRUHXQHRXGHVUDQJpHVVXSSOpPHQWDLUHVfalse
VLQRQ,OQ¶H[LVWHSDVGHPpWKRGHprevious()-'%&LQWURGXLWGH QRXYHOOHVPpWKRGHVSHUPHWWDQWXQGpSODFHPHQWGDQVOHVGLUHFWLRQV
/HVFODVVHV6WDWHPHQW HW 5HVXOW6HW
public Vector getNomsImages() throws SQLException,RemoteException{ Vector noms = new Vector(); Statement stmt = connexion.createStatement(); ResultSet rset = stmt.executeQuery("SELECT ENAME FROM EMP"); while(rset.next()) noms.addElement(rset.getString(1)); stmt.close(); return noms; }
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
0DVWqUHV,$'%$
$QQpHVFRODLUH
*HVWLRQGHVSLORWHVHW FRQQH[LRQjODEDVH 'ULYHU0DQDJHU
&RQQHFWLRQ
UHJLVWHU'ULYHU'ULYHU
FUHDWH6WDWHPHQW SUHSDUH6WDWHPHQWVTO
'ULYHUV
SUHSDUH&DOOVTO JHW&RQQHFWLRQXUO
6WDWHPHQW
3UHSDUHG6WDWHPHQW
H[HFXWH4XHU\VTO
H[HFXWH4XHU\
H[HFXWH8SGDWHVTO
H[HFXWH8SGDWH
&DOODEOH6WDWHPHQW
([HFXWH
5HVXOW6HW
JHW;;;LQW_QRPBFRO
LQW6WULQJ
*HVWLRQGHVSLORWHVHW FRQQH[LRQjODEDVH
'ULYHU0DQDJHU
&ODVVHTXLDU{OHV
WLHQWjMRXUXQHOLVWHGH'ULYHUVXQFRQWHQHXU
WUDQVPHWjO¶DSSOLFDWLRQOHGULYHUFRUUHVSRQGDQWjO¶85/WUDQVPLVH
3HUPHWG¶REWHQLUXQHFRQQH[LRQjXQEDVHGHGRQQpHV
PpWKRGH
JHW&RQQHFWLRQ TXLUHQYRLHXQHLQVWDQFHGH&RQQHFWLRQ
&RQQHFWLRQ
6\PEROLVHXQHWUDQVDFWLRQDYHFXQHEDVHGHGRQQpHV*qUHOHWUDQVIHUWGHV LQVWUXFWLRQV64/OHXUYDOLGDWLRQHWOHXUDQQXODWLRQ
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
PpWKRGHV
FRPPLW UROOEDFN VHW$XWR&RPPLWERROHDQ «
3HUPHWGHFUpHUXQHLQVWDQFHGHODFODVVH6WDWHPHQW PpWKRGH
FUHDWH6WDWHPHQW TXLUHQYRLHXQHLQVWDQFHGH6WDWHPHQW
0DVWqUHV,$'%$
$QQpHVFRODLUH
*HVWLRQGHVSLORWHVHW FRQQH[LRQjODEDVH
Connection connexion; // ... public void connect() throws SQLException, RemoteException{ String s = "jdbc:oracle:thin:tanguy/philippe@penfret:1521:BASETEST"; DriverManager.Driver(new oracle.jdbc.driver.OracleDriver()); connexion = DriverManager.getConnection(s); }
/DFODVVH3UHSDUHG6WDWHPHQW
3UHSDUHG6WDWHPHQW
3HUPHWGHOLHUGHVSDUDPqWUHVjXQDSSHO64/DYDQWVRQH[pFXWLRQ GDQVXQVRXFL G¶HIILFDFLWp
/HVSDUDPqWUHVVRQWSDVVpVjO¶LQVWUXFWLRQ64/jO¶DLGHGHVPpWKRGHV
setType(position,valeur)
VHW,QW VHW6WULQJ&RXFRX
public void miseAJourEmploi(String ename,String job) throws SQLException,RemoteException { PreparedStatement pstmt = connexion.prepareStatement( "UPDATE EMP SET JOB=? WHERE ENAME=?"); pstmt.setString(1,job); pstmt.setString(2,ename); pstmt.executeUpdate(); pstmt.close(); }
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
0DVWqUHV,$'%$
$QQpHVFRODLUH
/HVFODVVHV6WDWHPHQW HW 5HVXOW6HW 'ULYHU0DQDJHU
&RQQHFWLRQ
UHJLVWHU'ULYHU'ULYHU
FUHDWH6WDWHPHQW SUHSDUH6WDWHPHQWVTO
'ULYHUV
SUHSDUH&DOOVTO JHW&RQQHFWLRQXUO
6WDWHPHQW
3UHSDUHG6WDWHPHQW
H[HFXWH4XHU\VTO
H[HFXWH4XHU\
H[HFXWH8SGDWHVTO
H[HFXWH8SGDWH
&DOODEOH6WDWHPHQW
([HFXWH
5HVXOW6HW
JHW;;;LQW_QRPBFRO
LQW6WULQJ
/DFODVVH&DOODEOH6WDWHPHQW &DOODEOH6WDWHPHQW 3HUPHWG¶H[SORLWHUOHVSURFpGXUHVVWRFNpHVGDQVODEDVH /HFRGH64/SRXUUDLWrWUHHQYR\pSDUXQexecuteUpdate(...) PDLVO¶DSSHOjXQH SURFpGXUHVWRFNpHV¶H[pFXWHSOXVUDSLGHPHQW
public void creerEmpVide(String ename) throws SQLException,RemoteException{ CallableStatement cstmt = connexion.prepareCall("{call insertion_image_vide(?)}"); cstmt.setString(1,ename); cstmt.execute(); cstmt.close(); }
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
0DVWqUHV,$'%$
$QQpHVFRODLUH
/HV PpWDGRQQpHV
5HVXOW6HW0HWD'DWD $SSRUWHGHVSUpFLVLRQVVXUOHVREMHWV5HVXOW6HW JpQpUpV
1RPEUHGHFRORQQHVFRQWHQXHVGDQVOH5HVXOW6HWQRPVGHVFRORQQHV SRVVLELOLWpG ¶DIIHFWHUODYDOHXUQXOOjXQHFRORQQH«
/¶LQVWDQFHGX5HVXOW6HW0HWD'DWDHVWREWHQXHSDUODPpWKRGH
5HVXOW6HW0HWD'DWDUVPG UVHWJHW0HWD'DWD JHW&ROXPQ&RXQW JHW&DWDORJ1DPHLQW QXP&RO JHW6FKHPD1DPHLQWQXP&RO LV1XOODEOHLQWQXP&RO «
'DWDEDVH0HWD'DWD $SSRUWHGHVSUpFLVLRQVVXUODEDVHGHGRQQpHV
7DEOHVH[LVWDWQWHVQRPG ¶XWLOLVDWHXULQWHUGLFWLRQVG¶pFULWXUH«
/ ¶LQVWDQFHHVWREWHQXHSDUODFODVVH&RQQHFWLRQ
PD&RQQH[LRQ JHW0HWD'DWD
&ODVVHVGH-'%& Driver
Statement
Connection
PreparedStatement
ResultSet
Array
Blob
ResultSetMetaData
Clob
Ref
DatabaseMetaData
SQLData
SQLInput
-'%&
SQLOutput
Struct
CallableStatement
-DYDODQJ2EMHFW
-DYDXWLO'DWH
'DWH
7LPH
7LPHVWDPS
'ULYHU0DQDJHU
'ULYHU3URSHUW\,QIR
7\SHV
http://java.sun.com/products/jdk/1.3/docs/guide/jdbc/getstart/GettingStartedTOC.fm.html
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
0DVWqUHV,$'%$
$QQpHVFRODLUH
/HVDUFKLWHFWXUHVGH-'%&
&RXFKHORJLFLHOOHRIIHUWHDX[
Programme JAVA
GpYHORSSHXUV$3, TXLSHUPHW O¶LQVHUWLRQG¶LQVWUXFWLRQV64/VRXV
JDBC Driver Manager
IRUPHGHSDUDPqWUHVGHPpWKRGHV -DYD
JDBC/ODBC Driver
,QWHUIDFHVGpILQLHVSRXUDVVXUHUOD
JDBC Driver ORACLE
FRQQH[LRQHWODJHVWLRQGHVDFFqV DX[GRQQpHV
ODBC driver 'ULYHUVSLORWHV G ¶XQIRXUQLVVHXU
ODBC Driver ORACLE
LQGLVSHQVDEOHV
-'%&IRQFWLRQQHVXUWRXWHVOHV
64/1HW
SODWHVIRUPHVR-DYD'HYHORSPHQW .LWHVWGLVSRQLEOH-'.
Autre SGBD
Oracle Local
Oracle distant
3ème tier 2ème
+773
tier
Browser
Appli JAVA
Appli JAVA &OLHQW
Servlet
;
Servlet
-6:'.:HE6HUYHU SHQIUHW
-'%& -'%&
BASETEST PL/SQL
JSP
Oracle LQWHUMedia
1er tier 2UDFOHLVHUYHUSHQIUHW
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
0DVWqUHV,$'%$
$QQpHVFRODLUH
'LVWULEXWLRQGHVUHVVRXUFHV $UFKLWHFWXUHVFOLHQWVHUYHXURXGLVWULEXpHVLQFOXDQWGHV
EDVHVGHGRQQpHVWUDQVSDUHQFH" %RVWRQSURMHFWV
Select ENAME, SAL FROM E, G, S WHERE DUR > 12 AND E.ENO = G.ENO AND E.TITLE = S.TITLE
%RVWRQHPSOR\HHV
Tokyo
%RVWRQDVVLJQPHQWV
Paris
Boston
3DULVSURMHFWV 3DULVHPSOR\HHV
Communication Network
3DULVDVVLJQPHQWV %RVWRQHPSOR\HHV
Montreal New York
0RQWUHDOSURMHFWV
%RVWRQSURMHFWV
3DULVSURMHFWV
1HZ
1HZ
1HZ
0RQWUHDOHPSOR\HHV
1HZ
0RQWUHDODVVLJQPHQWV
&RQFOXVLRQ
5HYDQFKHGH64/VXUODWKpRULH
,PPHQVHLPSOLFDWLRQGHVLQGXVWULHOV $UFKLWHFWXUHVFOLHQWVHUYHXUEDQDOLVpHV 6ROXWLRQVDOWHUQDWLYHVFUpGLEOHVDX[6*%'GLVWULEXpV 6WDQGDUGLVDWLRQGHSURWRFROHVGHYDOLGDWLRQGHWUDQVDFWLRQVGLVWULEXpHV
&RPPHQWJpUHUO¶,PSHGDQFHPLVPDWFK" 0RGqOH6*%'ODQJDJHGHSURJUDPPDWLRQ
3KLOLSSH 3LFRXHW ± (167%UHWDJQH
7\SHVGHGRQQpHVGLIIpUHQWV
7\SHVUHODWLRQQHOVVLPSOHV
7\SHV/3VWUXFWXUpVHWLPEULTXpV
0RWHXUG¶H[pFXWLRQGLIIpUHQWV
(QVHPEOLVWHHWVLPSOHV SRXUOHV6*%'UHODWLRQQHOV
7XSOH j WXSOH HWFRPSOH[HV SRXUOHV/3
0DVWqUHV,$'%$
$QQpHVFRODLUH
3KLOLSSH 3LFRXHW ± (167%UHWDJQH