Beruflich Dokumente
Kultur Dokumente
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