Sie sind auf Seite 1von 10

22/5/2016

JDBCetlesdonnesbinairesBLOB
Forums Tutoriels Magazine FAQs Blogs Chat Newsletter tudes Emploi Club

Rechercher

Contacts

Rendezvoussurinria.fr
pourdcouvrirnosmtiersetfaireavancer
larecherchenumrique

Accueil

ALM

Java

.NET

Dv.Web

EDI

Programmation
Java

ForumsJava

FAQsJava

TutorielsJava

SGBD

Office

JavaWeb

Spring

LivresJava

VidosJava

Android

Solutionsd'entreprise

Eclipse

SourcesJava

Applications

Mobiles

Systmes

NetBeans

Outils,EDI&APIJava

JavaSearch

UtilisationdeJDBCpourlagestiond'imagesenbasededonnes
Tabledesmatires
Avantpropos
Remerciements
1.Lestockagevolumineuxdedonnes
enbasededonnes
2.Crationdelatable
2.1.BasededonnesMySQL
2.2.Basededonnes
PostgreSQL
3.Interactionaveclabasededonnes
3.1.Connexion/Dconnexion
3.2.Enregistrementd'uneimage
3.3.Chargementd'uneimage
3.4.Listedesnomsd'images
4.Miseenplaced'uneapplication
graphique
4.1.JFileChooseretgestiondes
extensions
4.2.Botededialoguesimple
avecJOptionPane
4.3.LaclasseImageFrame
5.Utilisationd'unjar
5.1.Rassemblerleslibrairies
5.2.Crationd'unmanifest
5.3.Crationdujar
5.4.Excutiondujar
6.Quelquesliensutiles
Lebutdecetutorielestdevousprsenterunemaniredefairepourstockeretextraireuneimagedansunebasededonnesne
reposantquesurJDBC.Pourillustrerceci,nousallonsconstruireautourducoeurdecetutoriel,savoirlacommunicationavecla
basededonnes,unepetiteapplicationpermettantd'illustrerplusfacilementl'interactionaveclabasededonnes.
Ceseradoncgalementl'occasionderevenirsurd'autresconcepts.
Articlelu1fois.
L'auteur
Ricky81
L'article
Publile3juin2004Misjourle18novembre2004
Publicvis:intermdiaire
VersionPDFVersionhorsligne
ePub,AzwetMobi
Lienssociaux

Partager

Avantpropos
L'idepremiredecetutorielestdevousproposerunexempledecodes'appuyant
uniquementsurJDBC(enn'utilisantquedesclassesdupaquetjava.sql)permettant
deraliserlesoprationsdesauvegardeoudechargementd'imagessurdiffrents
SGBDR(ceuxquisontcompatiblesavecJDBC)sansavoirpersonnaliserlecode
selonlabasededonnescible.Ilestparexemplepossiblederaliserunetelle
oprationpourunSGBDRcommeORACLE,maisonestobligderecourirun
ResultSetOracle,cequiempchel'utilisationd'uncodeportablesuruneautrebase
dedonnes.

Remerciements
JetiensavanttoutremercierlasectionJava,etplusparticulirementrequestpour
sesremarquesetsesconseils,ainsiqueRmottepourlescorrections

http://ricky81.developpez.com/tutoriel/java/jdbc/blob/

1/10

22/5/2016

JDBCetlesdonnesbinairesBLOB
orthographiques.
1.Lestockagevolumineuxdedonnesenbasededonnes
Lebutn'estpasicidedbattreoudedonneruneopinionconcernantlestockagede
donnesvolumineuses(selonlanormeSQL,letypeLOBpourLargeOBject)dans
unebasededonnes.Pourceuxquinelesaventpas,desSGBDRcommeORACLE
permettentparexempledestockerdesfichiersdanslesystmedefichierdu
systmed'exploitation(cequ'onappellelesBFILEchezORACLE).
Ilexiste,selonlesSGBDR,diffrentescatgoriesdeLOB.Nousnousconcentrerons
icisurlesBLOB(BinaryLargeOBject)quisontddisauxdonnesbinaires,etdonc
notammentauximages.
Comptetenudesobjectifsrappelsenprambule,jemesuisdoncconcentrsurles
2SGBDRsuivantspourlesquelscelaestpossibleetquejepouvaistester:MySQL
etPostgreSQL.
NousallonsdanslasuiteprsentercommentsontgrlesLOBettraiterlacration
d'unetablepourchacunedecesbasesdedonnes.
Lesversionssurlesquellessebaselecontenudecetutorielsontlessuivantes:
MySQL3.23.49(intgrdansEasyPhp)
PostgreSQL7.4.1(utilissousWinXPavecCygwin)
2.Crationdelatable
Aprsavoircrvotrebasededonnes(icij'aipris"toto"et"titi"pournom
d'utilisateur/motdepasse),nousallonscrerunetablecontenant2colonnes:une
colonnename,etunecolonneimg.Appelonscettetableimages.

2.1.BasededonnesMySQL
PourMySQL,nousdisposonsde4variantesdutypeBLOB:
TINYBLOB

<=255octets(1octetpourstockerla
taille)

BLOB

<=65535octets(2octetspourla
taille)

MEDIUMBLOB

<=16777215octets(3octetspourla
taille)

LONGBLOB

<=4294967295octets(4octets
pourlataille)

Lechoixdutypeutiliserdpenddoncdutyped'informationsstocker.Pournotre
exemple,nouspourronsnouscontenterdutypeMEDIUMBLOB.
Voicil'ordreSQLdecration:

Slectionnez
CREATETABLEimage(
namevarchar(20)NOTNULL,
imgmediumblob,
PRIMARYKEY(name)
);

Anoterqu'ilestimportantdebiendfinirlavariablemax_allowed_packetpourne
pasavoird'erreurslorsdutransfertdedonnes.

2.2.BasededonnesPostgreSQL
LetypeutilisauniveaudePostgreSQLestBYTEAquipermetdestockerdes
donnesbinairesallantjusqu'1Go.
Voicil'ordreSQLdecration:

Slectionnez
CREATETABLE"public"."image"(
"name"VARCHAR(20)NOTNULL,
"img"BYTEA,
PRIMARYKEY("name")
)WITHOIDS;

3.Interactionaveclabasededonnes
Nousavonsdonclapossibilitd'utiliserunebasededonnesMySQLouPostgreSQL.
Jevousproposepourcelad'utiliserunfichierdeconfigurationpourgrerles
paramtresdeconnexionpropreschaquebasededonnes.Nouspourrionsbien
entenduajouterdesinformationssurlenomdelatableainsiquelesnomsdes
champs,maislebutprincipalestd'ymettrelafoisdesdonnescomme"url"et
"driver"propreschaqueSGBDR,ainsiquelesdonnesutilisateur/motdepasse

http://ricky81.developpez.com/tutoriel/java/jdbc/blob/

2/10

22/5/2016

JDBCetlesdonnesbinairesBLOB
surlesquelleslelecteurnepourrapeuttrepasagirs'ilcherchemettreen
pratiquelecontenudecetutoriel.
AppelonscesfichiersrespectivementproprieteMysqlBLOB.datet
proprietePostgresqlBLOB.dat:
proprieteMysqlBLOB.dat
user=toto
password=titi
url=jdbc\:mysql\://localhost/blob
driver=com.mysql.jdbc.Driver

proprietePostgresqlBLOB.dat
user=toto
password=titi
url=
jdbc\:postgresql\://localhost\:5432/blob
driver=org.postgresql.jdbc.Driver

Onnoteral'utilisationd'antislash\pourchapperlesdoublepointsdansles
chanes.
Ilconvientbienentendud'adapterlesparamtresenfonctiondevotre
configuration.Notammentlenomdelabasededonnes(blob)pourMySQLou
Postgresql.

3.1.Connexion/Dconnexion
Nouspouvonsdslorsutilisercesfichiersdeconfigurationpourdfinirunemthode
d'initialisationdelaconnexion.
NousallonsdoncentamerlapartieJAVAdecetutoriel,encrantunpackage
imagesetunepremireclasseBdd.
Pourrcuprerlesinformationsprsentesdansunfichierdeconfiguration,nous
auronsbesoind'utiliserjava.util.Properties.
VoicidonclecontenudelaclasseBddpourpermettred'tabliruneconnexion:

Slectionnez
packageimages;
importjava.sql.*;
importjava.util.*;
importjava.io.*;
publicclassBdd
{
privateConnectionconn;
publicBdd()
{
}

publicvoidinitialiserConnexion(StringfichierConfig)throwsException
{
PropertiespropBD=newProperties();

try
{
FileInputStreamentree=newFileInputStream(fichierConfig);
propBD.load(entree);
}
finally
{
entree.close();
}
Class.forName(propBD.getProperty("driver"));
conn=DriverManager.getConnection(propBD.getProperty("url"),
propBD.getProperty("user"),propBD.getProperty("password"));
}

publicvoiddeconnexion()throwsException
{
if(conn!=null)
{
conn.close();
}
}

3.2.Enregistrementd'uneimage
Pourenregistreruneimage,nousallonssuivreleprocessussuivant:oninsreune
nouvelleligneavecpourcontenulenomqu'onsouhaitedonnerl'image,puison
faitunemisejourpourinsrerl'image.
Pourcela,nousallonsnousreposersurlepaquetagejava.sqletnotammentla
classePreparedStatement(pourunerequteparamtre).

http://ricky81.developpez.com/tutoriel/java/jdbc/blob/

3/10

22/5/2016

JDBCetlesdonnesbinairesBLOB
Slectionnez
publicvoidsauveIMG(Stringlocation,Stringname)throwsException
{
FilemonImage=newFile(location);
FileInputStreamistreamImage=newFileInputStream(monImage);
try
{
PreparedStatementps=conn.prepareStatement("insertintoimage(name,img)values(?,?)
try
{
ps.setString(1,name);
ps.setBinaryStream(2,istreamImage,(int)monImage.length());
ps.executeUpdate();
}
finally
{
ps.close();
}
}
finally
{
istreamImage.close();
}
}

LesparamtresdansunPreparedStatementsematrialisentparunpoint
d'interrogation.L'affectationducontenuduparamtresefaitparlamthodesetXXX
(iciparexemplesetString)dontlepremierargumentestlapositionduparamtre
danslarequte.
Lesrequtesdeslections'excutentengnralaveclamthodeexecuteQuery(),
lesrequtesdemisejours'excutentellesl'aidedeexecuteUpdate().Ilest
nanmoinspossible,lorsqu'onchercheexcuterunerequtequ'onneconnatpas,
d'utiliserlamthodeexecute().
Concernantlapartiespcifiquelacopiedesinformationsextraitesdufichierla
basededonnes,ons'appuiesurdescomposantsgrantunfluxbinaire.On
commencedoncpardfinirlefichierconsulteretonluiassocieunfluxentrant.Le
fluxestensuiteaffectlacolonneimgdelatablel'aidedelamthode
setBinaryStreamdontlessecondettroisimeparamtrescorrespondent
respectivementaufluxentrantetlatailleextraire.
LamthodesetBinaryStreamprendpourtroisimeparamtreunentiernonsign
int,cequiveutdirequelavaleurmaximaleserade2147483647,soitl'assurance
depouvoirgrerunefichierallantjusqu'plusde2Go.

3.3.Chargementd'uneimage
Nousallonsgalementraliserl'oprationinverse,c'estdireenregistrersurnotre
disqueduruneimagecontenuedanslabasededonnes.

Slectionnez
publicvoidchargeIMG(Stringname,Stringlocation)throwsException
{
FilemonImage=newFile(location);
FileOutputStreamostreamImage=newFileOutputStream(monImage);

try
{
PreparedStatementps=conn.prepareStatement("selectimgfromimagewherename=?");
try
{
ps.setString(1,name);
ResultSetrs=ps.executeQuery();

try
{
if(rs.next())
{
InputStreamistreamImage=rs.getBinaryStream("img");

byte[]buffer=newbyte[1024];
intlength=0;

while((length=istreamImage.read(buffer))!=1)
{
ostreamImage.write(buffer,0,length);

}
}
finally
{
rs.close();
}
}
finally
{
ps.close();
}
}

http://ricky81.developpez.com/tutoriel/java/jdbc/blob/

4/10

22/5/2016

JDBCetlesdonnesbinairesBLOB
finally
{
ostreamImage.close();
}
}

Leprincipedutransfertdesdonnesestidentiquecequiestutilisdansla
mthodedesauvegarde.Onnoteral'utilisationd'unevariantedanslamthode
getBinaryStream()pourlaquelleonpeutgalementfournircommeparamtrele
nomdelacolonnecible.
Letransfertsefaitquantluil'aided'unbufferintermdiaireetpermetdelire
morceauxparmorceauxlecontenuenbasepourlerecopierdanslefluxdesortie
reliunfichier.

3.4.Listedesnomsd'images

Slectionnez
publicVectorgetAllNames()throwsException
{
Vectorres=newVector();
Statementstmt=conn.createStatement();
try
{
ResultSetrset=stmt.executeQuery("selectnamefromimage");
try
{
while(rset.next())
{
res.add(rset.getString("name"));
}
}
finally
{
rset.close();
}
}
finally
{
stmt.close();
}
returnres;
}

4.Miseenplaced'uneapplicationgraphique
Laclassequenousvenonsderaliserestbienentenduoprationnelleetvous
pouveztrsbienltesterencrivantunemthodemain.Nanmoins,ilestplus
agrabledebnficierd'unepetiteinterfacegraphiquepermettantdegrerles
diffrentesoprations.
Pourcela,nousallonsnousappuyersurlecomposantJFileChooser(voirlaFAQ
JAVA)pourlaslectiond'unfichier,ainsiqu'unebotededialoguetrssimplepour
lasaisied'unnom,letoutexploitparuneJFrameavecunmenu.

4.1.JFileChooseretgestiondesextensions
Pourpouvoirfiltrersuivantdesextensions,nousdevonsdfiniruneclasse
particulirequenousappelleronsExtensionFileFilterhritantde
javax.swing.filechooser.FileFilter.
Voicilecontenudelaclasseutilise:

Slectionnez
packageimages;
importjava.io.File;
importjavax.swing.filechooser.FileFilter;
publicclassExtensionFileFilterextendsFileFilter
{
Stringdescription;//descriptiondufiltre
String[]extensions;//listedesextensions
//leconstructeurpouruneseuleextension
publicExtensionFileFilter(Stringdescription,String[]extensions)
{
super();
this.description=description;
this.extensions=(String[])extensions;
}
//leconstructeurpourunelisted'extensions

http://ricky81.developpez.com/tutoriel/java/jdbc/blob/

publicExtensionFileFilter(Stringdescription,Stringextension)

5/10

22/5/2016

JDBCetlesdonnesbinairesBLOB
publicExtensionFileFilter(Stringdescription,Stringextension)
{
this(description,newString[]{extension});
}
//redfinitiondelamthodeaccept
publicbooleanaccept(Filefile)
{
if(file.isDirectory())
{
returntrue;
}
StringnomFichier=file.getPath();
intn=extensions.length;
for(inti=0;i<n;i++)
{
if(nomFichier.endsWith(extensions[i]))
{
returntrue;
}
}
returnfalse;
}
publicStringgetDescription()
{
returndescription;
}
}

Ilseraainsipossiblededfinirunfiltrepourunebotededialoguedeslectionde
fichier.

4.2.BotededialoguesimpleavecJOptionPane
Ilnousfautgalementdemanderl'utilisateurdesaisirunnomidentifiantl'image
enbasededonnes.Pourcelanousutiliseronsunebotededialogueassezsimple
dontvoiciunexemple.

Slectionnez
Stringname;
Stringmessage="Quelnomdonnercefichierenbase?";
name=JOptionPane.showInputDialog(message);
if(name!=null)
{
...
}

Ilyabiensrdesvariantespossibles,serfrerladocsurlesitedesunpour
plusd'informations.

4.3.LaclasseImageFrame
AprsavoirprcislesquelqueslmentsspcifiquesutilisspournotreFrame,
nouspouvonsdsormaisnousoccuperdelaclasseprincipalequivacorrespondre
notreinterfacegraphique.

Slectionnez
packageimages;
importjava.awt.*;
importjava.io.*;
importjava.util.*;
importjavax.swing.*;
importjava.awt.event.*;

http://ricky81.developpez.com/tutoriel/java/jdbc/blob/

6/10

22/5/2016

JDBCetlesdonnesbinairesBLOB
importjavax.swing.filechooser.FileFilter;
publicclassImageFrameextendsJFrame
{
//lmentsdumenu
privateJMenuBarmenuBar=newJMenuBar();
privateJMenumenuFichier=newJMenu();
privateJMenumenuCharger=newJMenu();
privateJMenuItemmenuFichierSelection=newJMenuItem();
privateJMenuItemmenuFichierQuitter=newJMenuItem();
privateJMenuItemmenuFichierEnregistrer=newJMenuItem();
privateBorderLayoutlayoutMain=newBorderLayout();
//lmentsdeslectiondefichiers
privateFileFilterfileFilter=null;
privateFileFilterdatFilter=null;
privateJFileChooserfileChooser=newJFileChooser(".");//dmarragedanslerpertoire
privateJFileChooserbddChooser=newJFileChooser(".");
//membrepermettantdegrerl'interactionaveclabasededonnes
privateBddgestionBdd=null;
publicImageFrame()
{
try
{
jbInit();
}
catch(Exceptione)
{
e.printStackTrace();
}
}
privatevoidjbInit()throwsException
{
this.setJMenuBar(menuBar);
this.getContentPane().setLayout(layoutMain);
this.setTitle("Gestionnaired'images");
this.setBackground(SystemColor.control);
//gestiondelafermeture
this.addWindowListener(newWindowAdapter()
{
publicvoidwindowClosing(WindowEvente)
{
quitter();
}
});
//initialisationdesfiltrespourlesdiffrentesslections
String[]filters=newString[]{"jpg","bmp","gif"};
fileFilter=newExtensionFileFilter("images",filters);
fileChooser.addChoosableFileFilter(fileFilter);
datFilter=newExtensionFileFilter("propritbdd","dat");
bddChooser.addChoosableFileFilter(datFilter);
//gestiondesdiffrentslmentsdumenu
menuFichier.setText("Fichier");
menuFichierSelection.setText("Selectionnerlabase");
menuFichierEnregistrer.setText("Enregistrerdanslabdd");
menuFichierEnregistrer.setEnabled(false);
menuCharger.setText("Charger");
menuFichierQuitter.setText("Quitter");
menuFichierSelection.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
intstatus=bddChooser.showDialog(null,"Slectiondufichierdeconfigurationde
if(status==JFileChooser.APPROVE_OPTION)
{
Filefile=bddChooser.getSelectedFile();
menuFichierEnregistrer.setEnabled(false);
try
{
gestionBdd.deconnexion();
gestionBdd.initialiserConnexion(file.getAbsolutePath());
initMenuCharger();//onrcuprelesnomsdesimagesprsentesenbase
menuFichierEnregistrer.setEnabled(true);
}
catch(Exceptionex)
{
JOptionPane.showMessageDialog(null,"Uneerreurs'estproduitedansl'initialisation
menuCharger.removeAll();//onsupprimeleslmentdumenuCharger
ex.printStackTrace();
}
}
}
}
);
menuFichierEnregistrer.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{

http://ricky81.developpez.com/tutoriel/java/jdbc/blob/

7/10

22/5/2016

JDBCetlesdonnesbinairesBLOB
intstatus=fileChooser.showDialog(null,"Slectiondufichiersauver");
if(status==JFileChooser.APPROVE_OPTION)
{
Filefile=fileChooser.getSelectedFile();
Stringname;
Stringmessage="Quelnomdonnercefichierenbase?";
name=JOptionPane.showInputDialog(message);
if(name!=null)
{
try
{
gestionBdd.sauveIMG(file.getAbsolutePath(),name);
initMenuCharger();//onrechargelalistedesimages
}
catch(Exceptionex)
{
JOptionPane.showMessageDialog(null,"Uneerreurs'estproduitedansl'enregistrement
ex.printStackTrace();
}
}
}
}
});
menuFichierQuitter.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEventae)
{
quitter();
}
});
menuFichier.add(menuFichierSelection);
menuFichier.add(menuFichierEnregistrer);
menuFichier.add(menuFichierQuitter);
menuBar.add(menuFichier);
menuBar.add(menuCharger);
}
privatevoidinitMenuCharger()
{
try
{
Vectorv=newVector(gestionBdd.getAllNames());
Iteratorit=v.iterator();
menuCharger.removeAll();//onsupprimeleslmentdumenuCharger
while(it.hasNext())
{
/*crationdynamiquedeslmentsdumenucharger
aveccrationd'unlistener.*/
finalStringname=(String)it.next();
JMenuItemitem=newJMenuItem(name);
item.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
intstatus=fileChooser.showDialog(null,"Saisirl'emplacementetlenomdufichier

if(status==JFileChooser.APPROVE_OPTION)
{
try
{
gestionBdd.chargeIMG(name,fileChooser.getSelectedFile().getAbsolutePath());
}
catch(Exceptionex)
{
JOptionPane.showMessageDialog(null,"Uneerreurs'estproduitedanslechargement
ex.printStackTrace();
}
}
}
}
);

menuCharger.add(item);//onajoutel'lmentdanslemenu
}
}
catch(Exceptionex)
{
JOptionPane.showMessageDialog(null,"Uneerreurs'estproduitelorsdelarcupration
ex.printStackTrace();
}
}

//permetdedfinirlegestionnairedebasededonnes
publicvoidsetGestionnaireBdd(Bddbdd)
{
this.gestionBdd=bdd;
}

publicvoidquitter()
{
try
{
gestionBdd.deconnexion();
}
catch(Exceptionex)
{

http://ricky81.developpez.com/tutoriel/java/jdbc/blob/

8/10

22/5/2016

JDBCetlesdonnesbinairesBLOB
JOptionPane.showMessageDialog(null,"Uneerreurs'estproduitelorsdeladconnexion."
ex.printStackTrace();
}
System.exit(0);
}
publicstaticvoidmain(String[]args)
{
ImageFramef=newImageFrame();
f.setSize(300,300);
BddgestionnaireBdd=newBdd();
f.setGestionnaireBdd(gestionnaireBdd);
f.show();
}
}

5.Utilisationd'unjar
Notreapplicationestmaintenantutilisable.Ilneresteplusqu'seproccuperdu
dploiementafinquen'importequipuissel'utilisersansavoirseproccuperdes
librairiesncessaires.
Pourcela,nousallonsraliserunjar,plusagrableexcuter,etvitant
l'utilisateurdedevoirtranerlesdiffrentesclassesquenousavonsdfinies.
Aprsavoircompiletcrvos.classdanslerpertoireclasses/images/,voustes
prtprparervotrejar.

5.1.Rassemblerleslibrairies
Nousavonschoisidefaciliterl'utilisationdenotrepetiteapplicationenfournissant
leslibrairiesncessaires,cequiveutdirequ'unefoisnotrejarcr,ilira
rechercherlesclassesncessairesdansunelistedelibrairiesquenousluiauront
donn.
Nousallonsdonccrer(dansclasses/parexemple)unrpertoirelibquivacontenir
nosdiffrentsjar,savoirpourcequiatutilis:
javaxssl1_1.jar
javaxssl1_2.jar
mysqlconnectorjava3.0.10stablebin.jar
postgre74.213.jdbc3.jar
Lesdeuxpremiersjarm'onttncessairespourlabasededonnesPostgreSQL.
Librevousderajouterd'autresjarsivousavezd'autresbesoins.

5.2.Crationd'unmanifest
Lorsquevouscrezunjar,sastructureestlasuivante:
Fichiers
RpertoireMETAINF
LerpertoireMETAINFcontiententreautresunfichiernommMANIFEST.MFdans
lequelsontnotammentrecensesdesinformationssurlepackageetsurles
librairiesutilises.
Lebutestdoncdedfiniruntelfichierpermettantdefournirlesinformations
ncessairesaubonfonctionnementdenotreapplication.
Comptetenudesjarquirisquentd'trencessairesl'excution,ilfaudrarecenser
ceuxci,maisilfaudragalementdfinirquelleestlaclasseexcuter(c'estdire
celledontonvaexcuterlamthodemainlorsdel'excutiondujar).
Pourcefaire,nousallonscrerunfichier"manifest.txt"(toujoursdansclasses/)o
nousallonsmettrelesinformationssuivantes:

Slectionnez
MainClass:images/ImageFrame
ClassPath:lib/postgre74.213.jdbc3.jarlib/javaxssl1_2.jarlib/javaxssl1_1.jar
lib/mysqlconnectorjava3.0.10stablebin.jar

LesinformationspourClassPathsontsurunemmeligneetchaquejarestspar
duprcdentparunespace.

5.3.Crationdujar
Tousestmaintenantenplacepourcrerlejar.
Plaonsnousenlignedecommandedanslerpertoireclassesettaponsla
commandesuivante:

Slectionnez
jarcvfmimages.jarmanifest.txtimages

http://ricky81.developpez.com/tutoriel/java/jdbc/blob/

9/10

22/5/2016

JDBCetlesdonnesbinairesBLOB
Nousvenonsdecrernotrejarsouslenomdeimages.jar.

5.4.Excutiondujar
Laprincipaleobligationpourpouvoirlancernotrejarettravaillersurles2basesde
donnesmentionnesdanscetutorielestd'avoirdanslerpertoireoimages.jar
seraplacgalementprsentlerpertoirelibcrprcdemment.Eneffet,les
informationsprsentesdanslemanifestindiquentochercherleslibrairies,etnous
avonsindiqudesadressesrelativesaujar.
Ilsuffitensuitedelancernotrepetiteapplicationpar:

Slectionnez
javajarimages.jar

6.Quelquesliensutiles
Vouspouvezbienentendutlchargerlessourcesetl'applicationsousformedejar.
LesimagesenbasededonnesparSQLPro
LesLOBS(ouLargesObjects)avecORACLEparHelyos
InstalleretconfigurerMySQLsousLinuxparOlivierNepomiachty
InstalleretconfigurerPostgreSQLsousLinuxparStessy
LaFAQJDBC
ArticlesettutorielsBorlandC++Builder
AccdezunebasededonnesAccessaveclescomposantsduBDE
Guided'installationdelaRxLibsousBCB6
PrsentationetutilisationdupluginborCVSpourBorlandC++Builder6
ArticlesettutorielsJava
Prsentationdel'APIReflection
Gestiond'imagesenbasededonnesavecl'APIJDBC
Interviewetreportages
CompterendudesconfrencesJAX2006,EclipseForumEurope2006,EAKon2006
Interviewd'EricLefevre,consultantchezValtech,ausujetdel'OpenSpace
Technology
CompterendudesValtechDays2007
Autresarticlesettutoriels
IntroductionCVS
PrsentationdulangageNICE
Critiquesdelivres
JakartaStrutsParlapratique(Eyrolles)
InitiationJSP(Eyrolles)
GestiondeprojetsavecSubversion(O'Reilly)
StrutsLesbonnespratiquespourdesdveloppementswebrussis(Dunod)
Hibernate3.0:GestionoptimaledelapersistancedanslesapplicationsJava/J2EE
(Eyrolles)
AnalyseetconceptionorientesobjetTtelapremire(O'Reilly)
GestiondeprojeteXtremeProgramming(Eyrolles)
Gestiondeprojetverslesmthodesagiles(Eyrolles)
AutreslienssurDeveloppez.com
LaFAQC++Builder
LesSourcesC++Builder
LesFAQsJAVA

Lessourcesprsentessurcettepagesontlibresdedroitsetvouspouvezlesutiliser
votreconvenance.Parcontre,lapagedeprsentationconstitueuneuvreintellectuelle
protgeparlesdroitsd'auteur.Copyright2004Ricky81.Aucunereproduction,mme
partielle,nepeuttrefaitedecesiteetdel'ensembledesoncontenu:textes,documents,
images,etc.sansl'autorisationexpressedel'auteur.Sinonvousencourezselonlaloi
jusqu'troisansdeprisonetjusqu'300000dedommagesetintrts.

ResponsablebnvoledelarubriqueJava:MickaelBaronContacterparemail
Nouscontacter

Participez

Hbergement

Informationslgales

Copyright20002016www.developpez.com

http://ricky81.developpez.com/tutoriel/java/jdbc/blob/

10/10

Das könnte Ihnen auch gefallen