|
|
@@ -1,462 +0,0 @@
|
|
|
-<!DOCTYPE html>
|
|
|
-<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
|
|
-<head>
|
|
|
- <meta charset="utf-8" />
|
|
|
- <meta name="generator" content="pandoc" />
|
|
|
- <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
|
|
- <title>Base de données</title>
|
|
|
- <style type="text/css">
|
|
|
- code{white-space: pre-wrap;}
|
|
|
- span.smallcaps{font-variant: small-caps;}
|
|
|
- span.underline{text-decoration: underline;}
|
|
|
- div.column{display: inline-block; vertical-align: top; width: 50%;}
|
|
|
- </style>
|
|
|
- <style type="text/css">
|
|
|
-a.sourceLine { display: inline-block; line-height: 1.25; }
|
|
|
-a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
|
|
|
-a.sourceLine:empty { height: 1.2em; position: absolute; }
|
|
|
-.sourceCode { overflow: visible; }
|
|
|
-code.sourceCode { white-space: pre; position: relative; }
|
|
|
-div.sourceCode { margin: 1em 0; }
|
|
|
-pre.sourceCode { margin: 0; }
|
|
|
-@media screen {
|
|
|
-div.sourceCode { overflow: auto; }
|
|
|
-}
|
|
|
-@media print {
|
|
|
-code.sourceCode { white-space: pre-wrap; }
|
|
|
-a.sourceLine { text-indent: -1em; padding-left: 1em; }
|
|
|
-}
|
|
|
-pre.numberSource a.sourceLine
|
|
|
- { position: relative; }
|
|
|
-pre.numberSource a.sourceLine:empty
|
|
|
- { position: absolute; }
|
|
|
-pre.numberSource a.sourceLine::before
|
|
|
- { content: attr(data-line-number);
|
|
|
- position: absolute; left: -5em; text-align: right; vertical-align: baseline;
|
|
|
- border: none; pointer-events: all;
|
|
|
- -webkit-touch-callout: none; -webkit-user-select: none;
|
|
|
- -khtml-user-select: none; -moz-user-select: none;
|
|
|
- -ms-user-select: none; user-select: none;
|
|
|
- padding: 0 4px; width: 4em;
|
|
|
- color: #aaaaaa;
|
|
|
- }
|
|
|
-pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
|
|
|
-div.sourceCode
|
|
|
- { }
|
|
|
-@media screen {
|
|
|
-a.sourceLine::before { text-decoration: underline; }
|
|
|
-}
|
|
|
-code span.al { color: #ff0000; font-weight: bold; } /* Alert */
|
|
|
-code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
|
|
|
-code span.at { color: #7d9029; } /* Attribute */
|
|
|
-code span.bn { color: #40a070; } /* BaseN */
|
|
|
-code span.bu { } /* BuiltIn */
|
|
|
-code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
|
|
|
-code span.ch { color: #4070a0; } /* Char */
|
|
|
-code span.cn { color: #880000; } /* Constant */
|
|
|
-code span.co { color: #60a0b0; font-style: italic; } /* Comment */
|
|
|
-code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
|
|
|
-code span.do { color: #ba2121; font-style: italic; } /* Documentation */
|
|
|
-code span.dt { color: #902000; } /* DataType */
|
|
|
-code span.dv { color: #40a070; } /* DecVal */
|
|
|
-code span.er { color: #ff0000; font-weight: bold; } /* Error */
|
|
|
-code span.ex { } /* Extension */
|
|
|
-code span.fl { color: #40a070; } /* Float */
|
|
|
-code span.fu { color: #06287e; } /* Function */
|
|
|
-code span.im { } /* Import */
|
|
|
-code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
|
|
|
-code span.kw { color: #007020; font-weight: bold; } /* Keyword */
|
|
|
-code span.op { color: #666666; } /* Operator */
|
|
|
-code span.ot { color: #007020; } /* Other */
|
|
|
-code span.pp { color: #bc7a00; } /* Preprocessor */
|
|
|
-code span.sc { color: #4070a0; } /* SpecialChar */
|
|
|
-code span.ss { color: #bb6688; } /* SpecialString */
|
|
|
-code span.st { color: #4070a0; } /* String */
|
|
|
-code span.va { color: #19177c; } /* Variable */
|
|
|
-code span.vs { color: #4070a0; } /* VerbatimString */
|
|
|
-code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
|
|
|
- </style>
|
|
|
- <link rel="stylesheet" href="pandoc.css">
|
|
|
- <!--[if lt IE 9]>
|
|
|
- <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
|
|
- <![endif]-->
|
|
|
-</head>
|
|
|
-<body>
|
|
|
-<div class="doctitle">Base de données</div>
|
|
|
-<nav id="TOC">
|
|
|
-<ul>
|
|
|
-<li><a href="#accès-à-une-base-de-données">Accès à une base de données</a><ul>
|
|
|
-<li><a href="#introduction">Introduction</a></li>
|
|
|
-<li><a href="#accès-à-une-base-mysql">Accès à une base MySQL</a><ul>
|
|
|
-<li><a href="#installation">Installation</a></li>
|
|
|
-<li><a href="#utilisation">Utilisation</a></li>
|
|
|
-</ul></li>
|
|
|
-<li><a href="#exercice">Exercice</a></li>
|
|
|
-<li><a href="#ecrire-dans-les-bases-de-données">Ecrire dans les bases de données</a></li>
|
|
|
-<li><a href="#pour-aller-plus-loin">Pour aller plus loin</a></li>
|
|
|
-</ul></li>
|
|
|
-</ul>
|
|
|
-</nav>
|
|
|
-<h1 id="accès-à-une-base-de-données">Accès à une base de données</h1>
|
|
|
-<h2 id="introduction">Introduction</h2>
|
|
|
-<p>Nous allons utiliser JDBC pour accéder à une base de données. Il existe d’autres librairies qui permettent l’accès aux bases de données, avec des fonctionnalités plus avancées (par exemple JPA ou Hibernate).</p>
|
|
|
-<p>Cependant JDBC est l’API de bas niveau qui est utilisée par toutes celles de plus haut niveau.</p>
|
|
|
-<p>Nous allons donc découvrir le fonctionnement de cette API et voir comment on peut <em>mapper</em> (c’est-à-dire associer) les entrées d’une base de données avec les membres d’une classe. Ceci revient à faire correspondre les valeurs d’une table aux attributs d’une classe.</p>
|
|
|
-<h2 id="accès-à-une-base-mysql">Accès à une base MySQL</h2>
|
|
|
-<h3 id="installation">Installation</h3>
|
|
|
-<p>Pour commencer, vous allez écrire le programme suivant et le lancer:</p>
|
|
|
-<div class="sourceCode" id="cb1"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb1-1" data-line-number="1"><span class="kw">package</span><span class="im"> fr.greta.dwm2.database;</span></a>
|
|
|
-<a class="sourceLine" id="cb1-2" data-line-number="2"></a>
|
|
|
-<a class="sourceLine" id="cb1-3" data-line-number="3"><span class="kw">import</span><span class="im"> java.sql.*;</span></a>
|
|
|
-<a class="sourceLine" id="cb1-4" data-line-number="4"></a>
|
|
|
-<a class="sourceLine" id="cb1-5" data-line-number="5"><span class="kw">public</span> <span class="kw">class</span> Demo {</a>
|
|
|
-<a class="sourceLine" id="cb1-6" data-line-number="6"> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span>(<span class="bu">String</span>[] args) {</a>
|
|
|
-<a class="sourceLine" id="cb1-7" data-line-number="7"> <span class="co">//Commençons par charger le pilote:</span></a>
|
|
|
-<a class="sourceLine" id="cb1-8" data-line-number="8"> <span class="kw">try</span> {</a>
|
|
|
-<a class="sourceLine" id="cb1-9" data-line-number="9"> <span class="bu">Class</span>.<span class="fu">forName</span>(<span class="st">"com.mysql.jdbc.Driver"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb1-10" data-line-number="10"> } <span class="kw">catch</span> (<span class="bu">ClassNotFoundException</span> e) {</a>
|
|
|
-<a class="sourceLine" id="cb1-11" data-line-number="11"> e.<span class="fu">printStackTrace</span>();</a>
|
|
|
-<a class="sourceLine" id="cb1-12" data-line-number="12"> }</a>
|
|
|
-<a class="sourceLine" id="cb1-13" data-line-number="13"></a>
|
|
|
-<a class="sourceLine" id="cb1-14" data-line-number="14"> }</a>
|
|
|
-<a class="sourceLine" id="cb1-15" data-line-number="15">}</a></code></pre></div>
|
|
|
-<p>Lancez ce programme. Vous constatez un erreur et c’est normal !</p>
|
|
|
-<p>Ce programme ne va pas marcher car il lui manque un connecteur que vous allez télécharger <a href="https://dev.mysql.com/downloads/connector/j/">sur le site de MySQL</a></p>
|
|
|
-<p>Choisissez une des deux archives, téléchargez-la et décompressez-la.</p>
|
|
|
-<p>Ce connecteur est une librairie qu’il faut ajouter à votre projet.</p>
|
|
|
-<p>Pour cela, ouvrez les propriétés du projet (bouton droit et <code>Properties</code>) et allez sur <code>Java Build Path</code> puis <code>Libraries</code></p>
|
|
|
-<figure>
|
|
|
-<img src="images/librairies.png" alt="Propriété du projet" /><figcaption>Propriété du projet</figcaption>
|
|
|
-</figure>
|
|
|
-<p>Cliquez sur <code>Add Library...</code></p>
|
|
|
-<figure>
|
|
|
-<img src="images/add_library_1.png" alt="Ajout de librairie" /><figcaption>Ajout de librairie</figcaption>
|
|
|
-</figure>
|
|
|
-<p>Sélectionnez <code>User Library</code> et cliquez sur <code>Next</code></p>
|
|
|
-<figure>
|
|
|
-<img src="images/add_library_2.png" alt="Ajout de librairie" /><figcaption>Ajout de librairie</figcaption>
|
|
|
-</figure>
|
|
|
-<p>Cliquez sur <code>User Libraries...</code></p>
|
|
|
-<figure>
|
|
|
-<img src="images/add_library_3.png" alt="Ajout de librairie" /><figcaption>Ajout de librairie</figcaption>
|
|
|
-</figure>
|
|
|
-<p>Cliquez sur <code>New...</code> et entrez comme nom : <code>Connecteur MySQL</code></p>
|
|
|
-<p>Sélectionnez la nouvelle librairie et cliquez sur <code>Add External JARs...</code></p>
|
|
|
-<p>Sélectionnez le fichier <code>mysql-connector-java-X.Y.ZZ-bin.jar</code> qui était dans l’archive puis validez les modifications</p>
|
|
|
-<p>Cliquez sur <code>Source attachment</code> puis sur <code>Edit...</code></p>
|
|
|
-<figure>
|
|
|
-<img src="images/add_library_4.png" alt="Ajout de librairie" /><figcaption>Ajout de librairie</figcaption>
|
|
|
-</figure>
|
|
|
-<p>Choisissez <code>External location</code> puis <code>External Folder...</code> et sélectionnez le répertoire <code>src</code> qui est dans le même dossier que le fichier JAR précédent.</p>
|
|
|
-<p>Validez toutes les modifications pour sortir des préférences</p>
|
|
|
-<figure>
|
|
|
-<img src="images/add_library_5.png" alt="Ajout de librairie" /><figcaption>Ajout de librairie</figcaption>
|
|
|
-</figure>
|
|
|
-<p>Cliquez sur <code>Finish</code> puis sur <code>OK</code></p>
|
|
|
-<p>Relancez le programme: aucune erreur n’apparaît, vous avez chargé un pilote pour le connecteur MySQL.</p>
|
|
|
-<h3 id="utilisation">Utilisation</h3>
|
|
|
-<h4 id="création-dune-base-de-données-de-test">Création d’une base de données de test</h4>
|
|
|
-<p>Vous pouvez soit utiliser <a href="exemples/demojava.sql">ce fichier</a>, soit suivre les instructions ci-dessous.</p>
|
|
|
-<div class="sourceCode" id="cb2"><pre class="sourceCode sql"><code class="sourceCode sql"><a class="sourceLine" id="cb2-1" data-line-number="1">mysql> <span class="kw">create</span> <span class="kw">database</span> demojava ;</a>
|
|
|
-<a class="sourceLine" id="cb2-2" data-line-number="2"><span class="kw">Database</span> changed</a>
|
|
|
-<a class="sourceLine" id="cb2-3" data-line-number="3"></a>
|
|
|
-<a class="sourceLine" id="cb2-4" data-line-number="4">mysql> show <span class="kw">tables</span> ;</a>
|
|
|
-<a class="sourceLine" id="cb2-5" data-line-number="5"><span class="kw">Empty</span> <span class="kw">set</span> (<span class="fl">0.00</span> sec)</a></code></pre></div>
|
|
|
-<p>Nous allons maintenant définir les privilèges d’accès à la base de données:</p>
|
|
|
-<div class="sourceCode" id="cb3"><pre class="sourceCode sql"><code class="sourceCode sql"><a class="sourceLine" id="cb3-1" data-line-number="1">mysql></a>
|
|
|
-<a class="sourceLine" id="cb3-2" data-line-number="2"><span class="kw">CREATE</span> <span class="fu">USER</span> <span class="st">'demouser'</span>@<span class="st">'%'</span> <span class="kw">IDENTIFIED</span> <span class="kw">BY</span> <span class="st">'MotDePasse'</span>;</a>
|
|
|
-<a class="sourceLine" id="cb3-3" data-line-number="3"></a>
|
|
|
-<a class="sourceLine" id="cb3-4" data-line-number="4">mysql> <span class="kw">GRANT</span> <span class="kw">ALL</span> <span class="kw">PRIVILEGES</span> <span class="kw">ON</span> demojava.* <span class="kw">TO</span> <span class="ot">"demouser"</span>@<span class="ot">"%"</span> <span class="kw">IDENTIFIED</span> <span class="kw">BY</span> <span class="ot">"MotDePasse"</span>;</a>
|
|
|
-<a class="sourceLine" id="cb3-5" data-line-number="5"><span class="kw">Query</span> OK, <span class="dv">0</span> <span class="kw">rows</span> affected (<span class="fl">0.00</span> sec)</a></code></pre></div>
|
|
|
-<p>Le <code>%</code> signifie que n’importe quelle machine pourra se connecter, ce qui n’est pas forcément une bonne chose.</p>
|
|
|
-<p>On pourra le remplacer soit par l’IP de l’hôte si elle est fixe, soit par <code>localhost</code>.</p>
|
|
|
-<p>Puis créer la table de démonstration:</p>
|
|
|
-<div class="sourceCode" id="cb4"><pre class="sourceCode sql"><code class="sourceCode sql"><a class="sourceLine" id="cb4-1" data-line-number="1">mysql> <span class="kw">create</span> <span class="kw">table</span> personne (nom <span class="dt">varchar</span>(<span class="dv">64</span>), prenom <span class="dt">varchar</span>(<span class="dv">64</span>), dnaissance <span class="dt">date</span>);</a>
|
|
|
-<a class="sourceLine" id="cb4-2" data-line-number="2"><span class="kw">Query</span> OK, <span class="dv">0</span> <span class="kw">rows</span> affected (<span class="fl">0.01</span> sec)</a>
|
|
|
-<a class="sourceLine" id="cb4-3" data-line-number="3"></a>
|
|
|
-<a class="sourceLine" id="cb4-4" data-line-number="4">mysql> show <span class="kw">tables</span> ;</a>
|
|
|
-<a class="sourceLine" id="cb4-5" data-line-number="5">+<span class="co">--------------------+</span></a>
|
|
|
-<a class="sourceLine" id="cb4-6" data-line-number="6">| Tables_in_demojava |</a>
|
|
|
-<a class="sourceLine" id="cb4-7" data-line-number="7">+<span class="co">--------------------+</span></a>
|
|
|
-<a class="sourceLine" id="cb4-8" data-line-number="8">| personne |</a>
|
|
|
-<a class="sourceLine" id="cb4-9" data-line-number="9">+<span class="co">--------------------+</span></a>
|
|
|
-<a class="sourceLine" id="cb4-10" data-line-number="10"><span class="dv">1</span> <span class="kw">row</span> <span class="kw">in</span> <span class="kw">set</span> (<span class="fl">0.00</span> sec)</a></code></pre></div>
|
|
|
-<p>On peut voir la définition de la table avec la commande suivante:</p>
|
|
|
-<div class="sourceCode" id="cb5"><pre class="sourceCode sql"><code class="sourceCode sql"><a class="sourceLine" id="cb5-1" data-line-number="1">mysql> describe personne;</a>
|
|
|
-<a class="sourceLine" id="cb5-2" data-line-number="2">+<span class="co">------------+-------------+------+-----+---------+-------+</span></a>
|
|
|
-<a class="sourceLine" id="cb5-3" data-line-number="3">| Field | <span class="kw">Type</span> | <span class="kw">Null</span> | <span class="kw">Key</span> | <span class="kw">Default</span> | Extra |</a>
|
|
|
-<a class="sourceLine" id="cb5-4" data-line-number="4">+<span class="co">------------+-------------+------+-----+---------+-------+</span></a>
|
|
|
-<a class="sourceLine" id="cb5-5" data-line-number="5">| nom | <span class="dt">varchar</span>(<span class="dv">64</span>) | YES | | <span class="kw">NULL</span> | |</a>
|
|
|
-<a class="sourceLine" id="cb5-6" data-line-number="6">| prenom | <span class="dt">varchar</span>(<span class="dv">64</span>) | YES | | <span class="kw">NULL</span> | |</a>
|
|
|
-<a class="sourceLine" id="cb5-7" data-line-number="7">| dnaissance | <span class="dt">date</span> | YES | | <span class="kw">NULL</span> | |</a>
|
|
|
-<a class="sourceLine" id="cb5-8" data-line-number="8">+<span class="co">------------+-------------+------+-----+---------+-------+</span></a>
|
|
|
-<a class="sourceLine" id="cb5-9" data-line-number="9"><span class="dv">3</span> <span class="kw">rows</span> <span class="kw">in</span> <span class="kw">set</span> (<span class="fl">0.01</span> sec)</a></code></pre></div>
|
|
|
-<p>On ajoute une entrée:</p>
|
|
|
-<div class="sourceCode" id="cb6"><pre class="sourceCode sql"><code class="sourceCode sql"><a class="sourceLine" id="cb6-1" data-line-number="1">mysql> <span class="kw">insert</span> <span class="kw">into</span> personne <span class="kw">values</span> (<span class="st">'Luther King'</span>,<span class="st">'Martin'</span>,<span class="st">'1929-01-15'</span>);</a>
|
|
|
-<a class="sourceLine" id="cb6-2" data-line-number="2"><span class="kw">Query</span> OK, <span class="dv">1</span> <span class="kw">row</span> affected (<span class="fl">0.01</span> sec)</a>
|
|
|
-<a class="sourceLine" id="cb6-3" data-line-number="3"></a>
|
|
|
-<a class="sourceLine" id="cb6-4" data-line-number="4">mysql> <span class="kw">select</span> * <span class="kw">from</span> personne ;</a>
|
|
|
-<a class="sourceLine" id="cb6-5" data-line-number="5">+<span class="co">-------------+--------+------------+</span></a>
|
|
|
-<a class="sourceLine" id="cb6-6" data-line-number="6">| nom | prenom | dnaissance |</a>
|
|
|
-<a class="sourceLine" id="cb6-7" data-line-number="7">+<span class="co">-------------+--------+------------+</span></a>
|
|
|
-<a class="sourceLine" id="cb6-8" data-line-number="8">| Luther King | Martin | <span class="dv">1929-01-15</span> |</a>
|
|
|
-<a class="sourceLine" id="cb6-9" data-line-number="9">+<span class="co">-------------+--------+------------+</span></a>
|
|
|
-<a class="sourceLine" id="cb6-10" data-line-number="10"><span class="dv">1</span> <span class="kw">row</span> <span class="kw">in</span> <span class="kw">set</span> (<span class="fl">0.00</span> sec)</a></code></pre></div>
|
|
|
-<h4 id="connecteur">Connecteur</h4>
|
|
|
-<p>Observez et analysez cet exemple :</p>
|
|
|
-<div class="sourceCode" id="cb7"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb7-1" data-line-number="1"><span class="kw">package</span><span class="im"> fr.greta.dwm2.database;</span></a>
|
|
|
-<a class="sourceLine" id="cb7-2" data-line-number="2"></a>
|
|
|
-<a class="sourceLine" id="cb7-3" data-line-number="3"><span class="kw">import</span><span class="im"> java.sql.*;</span></a>
|
|
|
-<a class="sourceLine" id="cb7-4" data-line-number="4"></a>
|
|
|
-<a class="sourceLine" id="cb7-5" data-line-number="5"><span class="kw">public</span> <span class="kw">class</span> ConnectionMySQL {</a>
|
|
|
-<a class="sourceLine" id="cb7-6" data-line-number="6"> <span class="kw">private</span> <span class="bu">Connection</span> connection = <span class="kw">null</span>;</a>
|
|
|
-<a class="sourceLine" id="cb7-7" data-line-number="7"> <span class="kw">private</span> <span class="bu">String</span> user, password, host;</a>
|
|
|
-<a class="sourceLine" id="cb7-8" data-line-number="8"></a>
|
|
|
-<a class="sourceLine" id="cb7-9" data-line-number="9"> <span class="kw">private</span> <span class="dt">static</span> <span class="dt">boolean</span> driverLoaded = <span class="kw">false</span>;</a>
|
|
|
-<a class="sourceLine" id="cb7-10" data-line-number="10"></a>
|
|
|
-<a class="sourceLine" id="cb7-11" data-line-number="11"> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">boolean</span> <span class="fu">isDriverLoaded</span>(){</a>
|
|
|
-<a class="sourceLine" id="cb7-12" data-line-number="12"> <span class="kw">return</span> driverLoaded;</a>
|
|
|
-<a class="sourceLine" id="cb7-13" data-line-number="13"> }</a>
|
|
|
-<a class="sourceLine" id="cb7-14" data-line-number="14"></a>
|
|
|
-<a class="sourceLine" id="cb7-15" data-line-number="15"> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">init</span>() <span class="kw">throws</span> <span class="bu">ClassNotFoundException</span>, <span class="bu">IllegalAccessException</span>, <span class="bu">InstantiationException</span>{</a>
|
|
|
-<a class="sourceLine" id="cb7-16" data-line-number="16"> <span class="kw">if</span>(!driverLoaded){</a>
|
|
|
-<a class="sourceLine" id="cb7-17" data-line-number="17"> <span class="co">//Chargement du pilote</span></a>
|
|
|
-<a class="sourceLine" id="cb7-18" data-line-number="18"> <span class="bu">Class</span>.<span class="fu">forName</span>(<span class="st">"com.mysql.jdbc.Driver"</span>).<span class="fu">newInstance</span>();</a>
|
|
|
-<a class="sourceLine" id="cb7-19" data-line-number="19"> driverLoaded = <span class="kw">true</span>;</a>
|
|
|
-<a class="sourceLine" id="cb7-20" data-line-number="20"> }</a>
|
|
|
-<a class="sourceLine" id="cb7-21" data-line-number="21"> }</a>
|
|
|
-<a class="sourceLine" id="cb7-22" data-line-number="22"></a>
|
|
|
-<a class="sourceLine" id="cb7-23" data-line-number="23"> <span class="kw">public</span> <span class="fu">ConnectionMySQL</span>() {</a>
|
|
|
-<a class="sourceLine" id="cb7-24" data-line-number="24"> <span class="kw">if</span>(!driverLoaded){</a>
|
|
|
-<a class="sourceLine" id="cb7-25" data-line-number="25"> <span class="kw">throw</span> <span class="kw">new</span> <span class="bu">IllegalStateException</span>(<span class="st">"Cannot instantiate if driver is not loaded. Please call "</span>+<span class="fu">getClass</span>().<span class="fu">getName</span>()+<span class="st">".init() method before invoking this constructor."</span>);</a>
|
|
|
-<a class="sourceLine" id="cb7-26" data-line-number="26"> }</a>
|
|
|
-<a class="sourceLine" id="cb7-27" data-line-number="27"> }</a>
|
|
|
-<a class="sourceLine" id="cb7-28" data-line-number="28"></a>
|
|
|
-<a class="sourceLine" id="cb7-29" data-line-number="29"> <span class="kw">public</span> <span class="fu">ConnectionMySQL</span>(<span class="bu">String</span> host, <span class="bu">String</span> user, <span class="bu">String</span> password) {</a>
|
|
|
-<a class="sourceLine" id="cb7-30" data-line-number="30"> <span class="kw">this</span>();</a>
|
|
|
-<a class="sourceLine" id="cb7-31" data-line-number="31"> <span class="kw">this</span>.<span class="fu">host</span> = host;</a>
|
|
|
-<a class="sourceLine" id="cb7-32" data-line-number="32"> <span class="kw">this</span>.<span class="fu">user</span> = user;</a>
|
|
|
-<a class="sourceLine" id="cb7-33" data-line-number="33"> <span class="kw">this</span>.<span class="fu">password</span> = password;</a>
|
|
|
-<a class="sourceLine" id="cb7-34" data-line-number="34"> }</a>
|
|
|
-<a class="sourceLine" id="cb7-35" data-line-number="35"></a>
|
|
|
-<a class="sourceLine" id="cb7-36" data-line-number="36"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">connect</span>() <span class="kw">throws</span> <span class="bu">SQLException</span>{</a>
|
|
|
-<a class="sourceLine" id="cb7-37" data-line-number="37"> <span class="co">//Connexion a la base de données</span></a>
|
|
|
-<a class="sourceLine" id="cb7-38" data-line-number="38"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"Connexion à la base de données"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb7-39" data-line-number="39"></a>
|
|
|
-<a class="sourceLine" id="cb7-40" data-line-number="40"> <span class="bu">String</span> dBurl = <span class="st">"jdbc:mysql://"</span>+host+<span class="st">"/demojava"</span>;</a>
|
|
|
-<a class="sourceLine" id="cb7-41" data-line-number="41"> connection = <span class="bu">DriverManager</span>.<span class="fu">getConnection</span>(dBurl, user, password);</a>
|
|
|
-<a class="sourceLine" id="cb7-42" data-line-number="42"></a>
|
|
|
-<a class="sourceLine" id="cb7-43" data-line-number="43"> <span class="co">/*</span></a>
|
|
|
-<a class="sourceLine" id="cb7-44" data-line-number="44"><span class="co"> * Autre utilisation possible:</span></a>
|
|
|
-<a class="sourceLine" id="cb7-45" data-line-number="45"><span class="co"> String dBurl = "jdbc:mysql://"+host+"/demojava"</span></a>
|
|
|
-<a class="sourceLine" id="cb7-46" data-line-number="46"><span class="co"> + "?user="+user+"&password="+password;</span></a>
|
|
|
-<a class="sourceLine" id="cb7-47" data-line-number="47"><span class="co"> connection = DriverManager.getConnection(dBurl);</span></a>
|
|
|
-<a class="sourceLine" id="cb7-48" data-line-number="48"><span class="co"> */</span></a>
|
|
|
-<a class="sourceLine" id="cb7-49" data-line-number="49"></a>
|
|
|
-<a class="sourceLine" id="cb7-50" data-line-number="50"> }</a>
|
|
|
-<a class="sourceLine" id="cb7-51" data-line-number="51"> <span class="kw">public</span> <span class="bu">ResultSet</span> <span class="fu">execute</span>(<span class="bu">String</span> requete) <span class="kw">throws</span> <span class="bu">SQLException</span>{</a>
|
|
|
-<a class="sourceLine" id="cb7-52" data-line-number="52"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"creation et execution de la requête :"</span>+requete);</a>
|
|
|
-<a class="sourceLine" id="cb7-53" data-line-number="53"> <span class="bu">Statement</span> stmt = connection.<span class="fu">createStatement</span>();</a>
|
|
|
-<a class="sourceLine" id="cb7-54" data-line-number="54"> <span class="kw">return</span> stmt.<span class="fu">executeQuery</span>(requete);</a>
|
|
|
-<a class="sourceLine" id="cb7-55" data-line-number="55"> }</a>
|
|
|
-<a class="sourceLine" id="cb7-56" data-line-number="56"></a>
|
|
|
-<a class="sourceLine" id="cb7-57" data-line-number="57"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">close</span>() <span class="kw">throws</span> <span class="bu">SQLException</span>{</a>
|
|
|
-<a class="sourceLine" id="cb7-58" data-line-number="58"> connection.<span class="fu">close</span>();</a>
|
|
|
-<a class="sourceLine" id="cb7-59" data-line-number="59"> }</a>
|
|
|
-<a class="sourceLine" id="cb7-60" data-line-number="60">}</a></code></pre></div>
|
|
|
-<p>Méthode <code>main</code> :</p>
|
|
|
-<div class="sourceCode" id="cb8"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb8-1" data-line-number="1"><span class="kw">package</span><span class="im"> fr.greta.dwm2.database;</span></a>
|
|
|
-<a class="sourceLine" id="cb8-2" data-line-number="2"></a>
|
|
|
-<a class="sourceLine" id="cb8-3" data-line-number="3"><span class="kw">import</span><span class="im"> java.sql.ResultSet;</span></a>
|
|
|
-<a class="sourceLine" id="cb8-4" data-line-number="4"><span class="kw">import</span><span class="im"> java.sql.ResultSetMetaData;</span></a>
|
|
|
-<a class="sourceLine" id="cb8-5" data-line-number="5"><span class="kw">import</span><span class="im"> java.sql.SQLException;</span></a>
|
|
|
-<a class="sourceLine" id="cb8-6" data-line-number="6"></a>
|
|
|
-<a class="sourceLine" id="cb8-7" data-line-number="7"><span class="kw">public</span> <span class="kw">class</span> AfficherTablePersonne {</a>
|
|
|
-<a class="sourceLine" id="cb8-8" data-line-number="8"></a>
|
|
|
-<a class="sourceLine" id="cb8-9" data-line-number="9"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">afficherDonnees</span>(<span class="bu">ResultSet</span> resultats) <span class="kw">throws</span> <span class="bu">SQLException</span>{</a>
|
|
|
-<a class="sourceLine" id="cb8-10" data-line-number="10"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"Parcours des donnees retournees"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb8-11" data-line-number="11"> <span class="bu">ResultSetMetaData</span> rsmd = resultats.<span class="fu">getMetaData</span>();</a>
|
|
|
-<a class="sourceLine" id="cb8-12" data-line-number="12"> <span class="dt">int</span> nbCols = rsmd.<span class="fu">getColumnCount</span>();</a>
|
|
|
-<a class="sourceLine" id="cb8-13" data-line-number="13"> <span class="dt">boolean</span> contientDAutresDonnees = resultats.<span class="fu">next</span>();</a>
|
|
|
-<a class="sourceLine" id="cb8-14" data-line-number="14"></a>
|
|
|
-<a class="sourceLine" id="cb8-15" data-line-number="15"> <span class="kw">for</span> (<span class="dt">int</span> i = <span class="dv">1</span>; i <= nbCols; i++) {</a>
|
|
|
-<a class="sourceLine" id="cb8-16" data-line-number="16"> <span class="kw">if</span>(i > <span class="dv">1</span>) {</a>
|
|
|
-<a class="sourceLine" id="cb8-17" data-line-number="17"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">print</span>( <span class="st">" | "</span>);</a>
|
|
|
-<a class="sourceLine" id="cb8-18" data-line-number="18"> }</a>
|
|
|
-<a class="sourceLine" id="cb8-19" data-line-number="19"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">print</span>(rsmd.<span class="fu">getColumnLabel</span>(i));</a>
|
|
|
-<a class="sourceLine" id="cb8-20" data-line-number="20"> }</a>
|
|
|
-<a class="sourceLine" id="cb8-21" data-line-number="21"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>();</a>
|
|
|
-<a class="sourceLine" id="cb8-22" data-line-number="22"></a>
|
|
|
-<a class="sourceLine" id="cb8-23" data-line-number="23"> <span class="kw">while</span> (contientDAutresDonnees) {</a>
|
|
|
-<a class="sourceLine" id="cb8-24" data-line-number="24"> <span class="kw">for</span> (<span class="dt">int</span> i = <span class="dv">1</span>; i <= nbCols; i++){</a>
|
|
|
-<a class="sourceLine" id="cb8-25" data-line-number="25"> <span class="kw">if</span>(i > <span class="dv">1</span>) {</a>
|
|
|
-<a class="sourceLine" id="cb8-26" data-line-number="26"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">print</span>( <span class="st">" | "</span>);</a>
|
|
|
-<a class="sourceLine" id="cb8-27" data-line-number="27"> }</a>
|
|
|
-<a class="sourceLine" id="cb8-28" data-line-number="28"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">print</span>(resultats.<span class="fu">getString</span>(i));</a>
|
|
|
-<a class="sourceLine" id="cb8-29" data-line-number="29"> }</a>
|
|
|
-<a class="sourceLine" id="cb8-30" data-line-number="30"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>();</a>
|
|
|
-<a class="sourceLine" id="cb8-31" data-line-number="31"> contientDAutresDonnees = resultats.<span class="fu">next</span>();</a>
|
|
|
-<a class="sourceLine" id="cb8-32" data-line-number="32"> }</a>
|
|
|
-<a class="sourceLine" id="cb8-33" data-line-number="33"></a>
|
|
|
-<a class="sourceLine" id="cb8-34" data-line-number="34"> resultats.<span class="fu">close</span>();</a>
|
|
|
-<a class="sourceLine" id="cb8-35" data-line-number="35"> }</a>
|
|
|
-<a class="sourceLine" id="cb8-36" data-line-number="36"></a>
|
|
|
-<a class="sourceLine" id="cb8-37" data-line-number="37"> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span>(java.<span class="fu">lang</span>.<span class="fu">String</span>[] args) {</a>
|
|
|
-<a class="sourceLine" id="cb8-38" data-line-number="38"> <span class="kw">try</span> {</a>
|
|
|
-<a class="sourceLine" id="cb8-39" data-line-number="39"> ConnectionMySQL.<span class="fu">init</span>();</a>
|
|
|
-<a class="sourceLine" id="cb8-40" data-line-number="40"> } <span class="kw">catch</span> (<span class="bu">ClassNotFoundException</span> | <span class="bu">IllegalAccessException</span> | <span class="bu">InstantiationException</span> e) {</a>
|
|
|
-<a class="sourceLine" id="cb8-41" data-line-number="41"> <span class="bu">System</span>.<span class="fu">err</span>.<span class="fu">println</span>(<span class="st">"La librairie n'est pas disponible"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb8-42" data-line-number="42"> <span class="bu">System</span>.<span class="fu">exit</span>(<span class="dv">5</span>);</a>
|
|
|
-<a class="sourceLine" id="cb8-43" data-line-number="43"> }</a>
|
|
|
-<a class="sourceLine" id="cb8-44" data-line-number="44"></a>
|
|
|
-<a class="sourceLine" id="cb8-45" data-line-number="45"></a>
|
|
|
-<a class="sourceLine" id="cb8-46" data-line-number="46"> AfficherTablePersonne atp = <span class="kw">new</span> <span class="fu">AfficherTablePersonne</span>();</a>
|
|
|
-<a class="sourceLine" id="cb8-47" data-line-number="47"> ConnectionMySQL connecteur = <span class="kw">new</span> <span class="fu">ConnectionMySQL</span>(<span class="st">"lamp.exemple.cesi"</span>, <span class="st">"demouser"</span>, <span class="st">"MotDePasse"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb8-48" data-line-number="48"> <span class="kw">try</span> {</a>
|
|
|
-<a class="sourceLine" id="cb8-49" data-line-number="49"> connecteur.<span class="fu">connect</span>();</a>
|
|
|
-<a class="sourceLine" id="cb8-50" data-line-number="50"></a>
|
|
|
-<a class="sourceLine" id="cb8-51" data-line-number="51"> <span class="bu">ResultSet</span> resultSet = connecteur.<span class="fu">execute</span>(<span class="st">"SELECT * FROM personne"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb8-52" data-line-number="52"> atp.<span class="fu">afficherDonnees</span>(resultSet);</a>
|
|
|
-<a class="sourceLine" id="cb8-53" data-line-number="53"></a>
|
|
|
-<a class="sourceLine" id="cb8-54" data-line-number="54"> <span class="co">//Bonne pratique: fermer votre résultat</span></a>
|
|
|
-<a class="sourceLine" id="cb8-55" data-line-number="55"> resultSet.<span class="fu">close</span>();</a>
|
|
|
-<a class="sourceLine" id="cb8-56" data-line-number="56"></a>
|
|
|
-<a class="sourceLine" id="cb8-57" data-line-number="57"> <span class="co">//Bonne pratique: fermer le connecteur</span></a>
|
|
|
-<a class="sourceLine" id="cb8-58" data-line-number="58"> connecteur.<span class="fu">close</span>();</a>
|
|
|
-<a class="sourceLine" id="cb8-59" data-line-number="59"> } <span class="kw">catch</span> (<span class="bu">SQLException</span> e) {</a>
|
|
|
-<a class="sourceLine" id="cb8-60" data-line-number="60"> e.<span class="fu">printStackTrace</span>();</a>
|
|
|
-<a class="sourceLine" id="cb8-61" data-line-number="61"> }</a>
|
|
|
-<a class="sourceLine" id="cb8-62" data-line-number="62"> <span class="bu">System</span>.<span class="fu">exit</span>(<span class="dv">0</span>);</a>
|
|
|
-<a class="sourceLine" id="cb8-63" data-line-number="63"> }</a>
|
|
|
-<a class="sourceLine" id="cb8-64" data-line-number="64">}</a></code></pre></div>
|
|
|
-<h2 id="exercice">Exercice</h2>
|
|
|
-<p>Créez une classe qui permette de stocker les résultats en lisant un <code>ResultSet</code> et un algorithme qui instancie une Personne pour chaque entrée de la base.</p>
|
|
|
-<div class="sourceCode" id="cb9"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb9-1" data-line-number="1"></a>
|
|
|
-<a class="sourceLine" id="cb9-2" data-line-number="2"><span class="kw">public</span> <span class="kw">interface</span> Personne{</a>
|
|
|
-<a class="sourceLine" id="cb9-3" data-line-number="3"> <span class="co">//...</span></a>
|
|
|
-<a class="sourceLine" id="cb9-4" data-line-number="4"> <span class="kw">public</span> <span class="bu">String</span> <span class="fu">getNom</span>();</a>
|
|
|
-<a class="sourceLine" id="cb9-5" data-line-number="5"> <span class="kw">public</span> <span class="bu">String</span> <span class="fu">getPrenom</span>();</a>
|
|
|
-<a class="sourceLine" id="cb9-6" data-line-number="6"></a>
|
|
|
-<a class="sourceLine" id="cb9-7" data-line-number="7"> <span class="kw">public</span> <span class="bu">Date</span> <span class="fu">getDateNaissance</span>();</a>
|
|
|
-<a class="sourceLine" id="cb9-8" data-line-number="8">}</a></code></pre></div>
|
|
|
-<h2 id="ecrire-dans-les-bases-de-données">Ecrire dans les bases de données</h2>
|
|
|
-<p>La classe suivante montre comment écrire dans une base de données:</p>
|
|
|
-<div class="sourceCode" id="cb10"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb10-1" data-line-number="1"><span class="kw">package</span><span class="im"> fr.greta.dwm2.database.lecture;</span></a>
|
|
|
-<a class="sourceLine" id="cb10-2" data-line-number="2"></a>
|
|
|
-<a class="sourceLine" id="cb10-3" data-line-number="3"><span class="kw">import</span><span class="im"> java.sql.SQLException;</span></a>
|
|
|
-<a class="sourceLine" id="cb10-4" data-line-number="4"><span class="kw">import</span><span class="im"> java.sql.Statement;</span></a>
|
|
|
-<a class="sourceLine" id="cb10-5" data-line-number="5"><span class="kw">import</span><span class="im"> java.text.SimpleDateFormat;</span></a>
|
|
|
-<a class="sourceLine" id="cb10-6" data-line-number="6"><span class="kw">import</span><span class="im"> java.util.InputMismatchException;</span></a>
|
|
|
-<a class="sourceLine" id="cb10-7" data-line-number="7"><span class="kw">import</span><span class="im"> java.util.List;</span></a>
|
|
|
-<a class="sourceLine" id="cb10-8" data-line-number="8"><span class="kw">import</span><span class="im"> java.util.Scanner;</span></a>
|
|
|
-<a class="sourceLine" id="cb10-9" data-line-number="9"></a>
|
|
|
-<a class="sourceLine" id="cb10-10" data-line-number="10"><span class="kw">import</span><span class="im"> fr.greta.dwm2.database.ConnectionMySQL;</span></a>
|
|
|
-<a class="sourceLine" id="cb10-11" data-line-number="11"><span class="kw">import</span><span class="im"> fr.greta.dwm2.database.DateSimple;</span></a>
|
|
|
-<a class="sourceLine" id="cb10-12" data-line-number="12"><span class="kw">import</span><span class="im"> fr.greta.dwm2.database.Personne;</span></a>
|
|
|
-<a class="sourceLine" id="cb10-13" data-line-number="13"><span class="kw">import</span><span class="im"> fr.greta.dwm2.util.GestionMenu;</span></a>
|
|
|
-<a class="sourceLine" id="cb10-14" data-line-number="14"></a>
|
|
|
-<a class="sourceLine" id="cb10-15" data-line-number="15"><span class="kw">public</span> <span class="kw">class</span> Ecriture {</a>
|
|
|
-<a class="sourceLine" id="cb10-16" data-line-number="16"> <span class="co">//INSERT INTO `personne`(`nom`, `prenom`, `dnaissance`) VALUES ('RABHI','Pierre','1938-05-29')</span></a>
|
|
|
-<a class="sourceLine" id="cb10-17" data-line-number="17"></a>
|
|
|
-<a class="sourceLine" id="cb10-18" data-line-number="18"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">remplir</span>(ConnectionMySQL connecteur){</a>
|
|
|
-<a class="sourceLine" id="cb10-19" data-line-number="19"> <span class="co">//Nécessaire pour faire les insertions</span></a>
|
|
|
-<a class="sourceLine" id="cb10-20" data-line-number="20"> <span class="bu">Statement</span> stmt = <span class="kw">null</span>;</a>
|
|
|
-<a class="sourceLine" id="cb10-21" data-line-number="21"> <span class="kw">try</span> {</a>
|
|
|
-<a class="sourceLine" id="cb10-22" data-line-number="22"> connecteur.<span class="fu">connect</span>();</a>
|
|
|
-<a class="sourceLine" id="cb10-23" data-line-number="23"> stmt = connecteur.<span class="fu">getConnection</span>().<span class="fu">createStatement</span>();</a>
|
|
|
-<a class="sourceLine" id="cb10-24" data-line-number="24"> <span class="dt">boolean</span> continuer = <span class="kw">true</span>;</a>
|
|
|
-<a class="sourceLine" id="cb10-25" data-line-number="25"> <span class="kw">while</span>(continuer){</a>
|
|
|
-<a class="sourceLine" id="cb10-26" data-line-number="26"> <span class="bu">String</span> nom = GestionMenu.<span class="fu">getInstance</span>().<span class="fu">getValeur</span>(<span class="st">"Entrez le nom:"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-27" data-line-number="27"> <span class="bu">String</span> prenom = GestionMenu.<span class="fu">getInstance</span>().<span class="fu">getValeur</span>(<span class="st">"Entrez le prénom:"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-28" data-line-number="28"> DateSimple ds = <span class="kw">null</span>;</a>
|
|
|
-<a class="sourceLine" id="cb10-29" data-line-number="29"> <span class="kw">while</span>(ds == <span class="kw">null</span>){</a>
|
|
|
-<a class="sourceLine" id="cb10-30" data-line-number="30"> <span class="bu">String</span> date = GestionMenu.<span class="fu">getInstance</span>().<span class="fu">getValeur</span>(<span class="st">"Entrez une date:"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-31" data-line-number="31"> ds = DateSimple.<span class="fu">checkDate</span>(date);</a>
|
|
|
-<a class="sourceLine" id="cb10-32" data-line-number="32"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-33" data-line-number="33"> <span class="fu">inserer</span>(stmt, nom, prenom, ds);</a>
|
|
|
-<a class="sourceLine" id="cb10-34" data-line-number="34"> <span class="bu">String</span> doitContinuer = GestionMenu.<span class="fu">getInstance</span>().<span class="fu">getValeur</span>(<span class="st">"Continuer (o/n):"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-35" data-line-number="35"> continuer = doitContinuer.<span class="fu">equals</span>(<span class="st">"o"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-36" data-line-number="36"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-37" data-line-number="37"> } <span class="kw">catch</span> (<span class="bu">SQLException</span> e) {</a>
|
|
|
-<a class="sourceLine" id="cb10-38" data-line-number="38"> e.<span class="fu">printStackTrace</span>();</a>
|
|
|
-<a class="sourceLine" id="cb10-39" data-line-number="39"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-40" data-line-number="40"> <span class="kw">finally</span>{</a>
|
|
|
-<a class="sourceLine" id="cb10-41" data-line-number="41"> <span class="kw">if</span> (stmt != <span class="kw">null</span>) {</a>
|
|
|
-<a class="sourceLine" id="cb10-42" data-line-number="42"> <span class="kw">try</span> {</a>
|
|
|
-<a class="sourceLine" id="cb10-43" data-line-number="43"> stmt.<span class="fu">close</span>();</a>
|
|
|
-<a class="sourceLine" id="cb10-44" data-line-number="44"> } <span class="kw">catch</span> (<span class="bu">SQLException</span> e) {</a>
|
|
|
-<a class="sourceLine" id="cb10-45" data-line-number="45"> <span class="bu">System</span>.<span class="fu">err</span>.<span class="fu">println</span>(<span class="st">"Erreur à la sortie"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-46" data-line-number="46"> e.<span class="fu">printStackTrace</span>();</a>
|
|
|
-<a class="sourceLine" id="cb10-47" data-line-number="47"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-48" data-line-number="48"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-49" data-line-number="49"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-50" data-line-number="50"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-51" data-line-number="51"></a>
|
|
|
-<a class="sourceLine" id="cb10-52" data-line-number="52"></a>
|
|
|
-<a class="sourceLine" id="cb10-53" data-line-number="53"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">changerDate</span>(ConnectionMySQL connecteur){</a>
|
|
|
-<a class="sourceLine" id="cb10-54" data-line-number="54"> <span class="co">//Nécessaire pour faire les insertions</span></a>
|
|
|
-<a class="sourceLine" id="cb10-55" data-line-number="55"> <span class="bu">Statement</span> stmt = <span class="kw">null</span>;</a>
|
|
|
-<a class="sourceLine" id="cb10-56" data-line-number="56"> <span class="kw">try</span> {</a>
|
|
|
-<a class="sourceLine" id="cb10-57" data-line-number="57"> connecteur.<span class="fu">connect</span>();</a>
|
|
|
-<a class="sourceLine" id="cb10-58" data-line-number="58"> stmt = connecteur.<span class="fu">getConnection</span>().<span class="fu">createStatement</span>();</a>
|
|
|
-<a class="sourceLine" id="cb10-59" data-line-number="59"> <span class="dt">boolean</span> continuer = <span class="kw">true</span>;</a>
|
|
|
-<a class="sourceLine" id="cb10-60" data-line-number="60"> <span class="kw">while</span>(continuer){</a>
|
|
|
-<a class="sourceLine" id="cb10-61" data-line-number="61"> <span class="bu">String</span> nom = GestionMenu.<span class="fu">getInstance</span>().<span class="fu">getValeur</span>(<span class="st">"Entrez le nom:"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-62" data-line-number="62"> <span class="bu">String</span> prenom = GestionMenu.<span class="fu">getInstance</span>().<span class="fu">getValeur</span>(<span class="st">"Entrez le prénom:"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-63" data-line-number="63"> DateSimple ds = <span class="kw">null</span>;</a>
|
|
|
-<a class="sourceLine" id="cb10-64" data-line-number="64"> <span class="kw">while</span>(ds == <span class="kw">null</span>){</a>
|
|
|
-<a class="sourceLine" id="cb10-65" data-line-number="65"> <span class="bu">String</span> date = GestionMenu.<span class="fu">getInstance</span>().<span class="fu">getValeur</span>(<span class="st">"Entrez une date:"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-66" data-line-number="66"> ds = DateSimple.<span class="fu">checkDate</span>(date);</a>
|
|
|
-<a class="sourceLine" id="cb10-67" data-line-number="67"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-68" data-line-number="68"> <span class="fu">inserer</span>(stmt, nom, prenom, ds);</a>
|
|
|
-<a class="sourceLine" id="cb10-69" data-line-number="69"> <span class="bu">String</span> doitContinuer = GestionMenu.<span class="fu">getInstance</span>().<span class="fu">getValeur</span>(<span class="st">"Continuer (o/n):"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-70" data-line-number="70"> continuer = doitContinuer.<span class="fu">equals</span>(<span class="st">"o"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-71" data-line-number="71"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-72" data-line-number="72"> } <span class="kw">catch</span> (<span class="bu">SQLException</span> e) {</a>
|
|
|
-<a class="sourceLine" id="cb10-73" data-line-number="73"> e.<span class="fu">printStackTrace</span>();</a>
|
|
|
-<a class="sourceLine" id="cb10-74" data-line-number="74"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-75" data-line-number="75"> <span class="kw">finally</span>{</a>
|
|
|
-<a class="sourceLine" id="cb10-76" data-line-number="76"> <span class="kw">if</span> (stmt != <span class="kw">null</span>) {</a>
|
|
|
-<a class="sourceLine" id="cb10-77" data-line-number="77"> <span class="kw">try</span> {</a>
|
|
|
-<a class="sourceLine" id="cb10-78" data-line-number="78"> stmt.<span class="fu">close</span>();</a>
|
|
|
-<a class="sourceLine" id="cb10-79" data-line-number="79"> } <span class="kw">catch</span> (<span class="bu">SQLException</span> e) {</a>
|
|
|
-<a class="sourceLine" id="cb10-80" data-line-number="80"> <span class="bu">System</span>.<span class="fu">err</span>.<span class="fu">println</span>(<span class="st">"Erreur à la sortie"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-81" data-line-number="81"> e.<span class="fu">printStackTrace</span>();</a>
|
|
|
-<a class="sourceLine" id="cb10-82" data-line-number="82"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-83" data-line-number="83"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-84" data-line-number="84"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-85" data-line-number="85"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-86" data-line-number="86"></a>
|
|
|
-<a class="sourceLine" id="cb10-87" data-line-number="87"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">inserer</span>(<span class="bu">Statement</span> stmt,</a>
|
|
|
-<a class="sourceLine" id="cb10-88" data-line-number="88"> <span class="bu">String</span> nom, <span class="bu">String</span> prenom, DateSimple date) <span class="kw">throws</span> <span class="bu">SQLException</span>{</a>
|
|
|
-<a class="sourceLine" id="cb10-89" data-line-number="89"> stmt.<span class="fu">executeUpdate</span>(</a>
|
|
|
-<a class="sourceLine" id="cb10-90" data-line-number="90"> <span class="st">"insert into personne "</span> +</a>
|
|
|
-<a class="sourceLine" id="cb10-91" data-line-number="91"> <span class="st">"values('"</span>+nom+<span class="st">"', '"</span>+prenom+<span class="st">"', '"</span>+date.<span class="fu">getSqlRepresentation</span>()+<span class="st">"')"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-92" data-line-number="92"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-93" data-line-number="93"></a>
|
|
|
-<a class="sourceLine" id="cb10-94" data-line-number="94"> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span>(<span class="bu">String</span>[] args) {</a>
|
|
|
-<a class="sourceLine" id="cb10-95" data-line-number="95"> <span class="kw">try</span> {</a>
|
|
|
-<a class="sourceLine" id="cb10-96" data-line-number="96"> ConnectionMySQL.<span class="fu">init</span>();</a>
|
|
|
-<a class="sourceLine" id="cb10-97" data-line-number="97"> } <span class="kw">catch</span> (<span class="bu">ClassNotFoundException</span> | <span class="bu">IllegalAccessException</span> | <span class="bu">InstantiationException</span> e) {</a>
|
|
|
-<a class="sourceLine" id="cb10-98" data-line-number="98"> <span class="bu">System</span>.<span class="fu">err</span>.<span class="fu">println</span>(<span class="st">"La librairie n'est pas disponible"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-99" data-line-number="99"> <span class="bu">System</span>.<span class="fu">exit</span>(<span class="dv">5</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-100" data-line-number="100"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-101" data-line-number="101"></a>
|
|
|
-<a class="sourceLine" id="cb10-102" data-line-number="102"></a>
|
|
|
-<a class="sourceLine" id="cb10-103" data-line-number="103"> <span class="co">//On peut continuer ici:</span></a>
|
|
|
-<a class="sourceLine" id="cb10-104" data-line-number="104"> ConnectionMySQL connecteur = <span class="kw">new</span> <span class="fu">ConnectionMySQL</span>(<span class="st">"lamp.exemple.cesi"</span>, <span class="st">"demouser"</span>, <span class="st">"MotDePasse"</span>);</a>
|
|
|
-<a class="sourceLine" id="cb10-105" data-line-number="105"> Ecriture ins = <span class="kw">new</span> <span class="fu">Ecriture</span>();</a>
|
|
|
-<a class="sourceLine" id="cb10-106" data-line-number="106"> ins.<span class="fu">remplir</span>(connecteur);</a>
|
|
|
-<a class="sourceLine" id="cb10-107" data-line-number="107"></a>
|
|
|
-<a class="sourceLine" id="cb10-108" data-line-number="108"> }</a>
|
|
|
-<a class="sourceLine" id="cb10-109" data-line-number="109">}</a></code></pre></div>
|
|
|
-<p>Le code source des classes qu’elle utilise est disponible <a href="exemples/database">ici</a> :</p>
|
|
|
-<ul>
|
|
|
-<li><a href="exemples/database/fr/greta/dwm2/util/GestionMenu.java">GestionMenu.java</a></li>
|
|
|
-<li><a href="exemples/database/fr/greta/dwm2/database/DateSimple.java">DateSimple.java</a></li>
|
|
|
-</ul>
|
|
|
-<p>Voir aussi cette page : <a href="http://docs.oracle.com/javase/tutorial/jdbc/basics/retrieving.html">Retrieving and Modifying Values from Result Sets</a></p>
|
|
|
-<h2 id="pour-aller-plus-loin">Pour aller plus loin</h2>
|
|
|
-<p>Des exemples complets sur l’ensemble des fonctionnalités JDBC <a href="http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html">sont disponibles ici</a>.</p>
|
|
|
-</body>
|
|
|
-</html>
|