Update 2] MySQL authored by Ferret Renaud's avatar Ferret Renaud
<table> <table>
<thead> <thead>
<tr> <tr>
<th width="200px"><h6>[:rewind: Exo Précédent](/Exo03-Banque/1%5D-Banque-p1)</h6></th> <th width="200px"><h6>[:rewind: Exo Précédent](/Exo03-Banque/1%5D-Banque-p1)</h6></th>
<th colspan="6" width="600px"><h1 align="center">04 - Java - JDBC</h1></th> <th colspan="6" width="600px"><h1 align="center">04 - Java - JDBC</h1></th>
<th width="200px"><h6 align="right">[Exo Suivant :fast_forward:](/Exo05-IO/1%5D-IO-Fichiers)</h6></th> <th width="200px"><h6 align="right">[Exo Suivant :fast_forward:](/Exo05-IO/1%5D-IO-Fichiers)</h6></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td>&nbsp;</td> <td>&nbsp;</td>
<td align="center">[:one:](/Exo04-JDBC/1%5D-JDBC-Base)<br/>JDBC</td> <td align="center">[:one:](/Exo04-JDBC/1%5D-JDBC-Base)<br/>JDBC</td>
<td align="center">:white_check_mark:<br/>MySQL</td> <td align="center">:white_check_mark:<br/>MySQL</td>
<td align="center">[:three:](/Exo04-JDBC/3%5D-HSQL)<br/>HSQL</td> <td align="center">[:three:](/Exo04-JDBC/3%5D-HSQL)<br/>HSQL</td>
<td align="center">[:four:](/Exo04-JDBC/4%5D-PostgreSQL)<br/>PostgreSQL</td> <td align="center">[:four:](/Exo04-JDBC/4%5D-PostgreSQL)<br/>PostgreSQL</td>
<td align="center">[:five:](/Exo04-JDBC/5%5D-Premiere-classe-Java)<br/>Une classe Java</td> <td align="center">[:five:](/Exo04-JDBC/5%5D-Premiere-classe-Java)<br/>Une classe Java</td>
<td align="center">[:six:](/Exo04-JDBC/6%5D-Banque-p6)<br/>Partie 6</td> <td align="center">[:six:](/Exo04-JDBC/6%5D-Banque-p6)<br/>Partie 6</td>
<td>&nbsp;</td> <td>&nbsp;</td>
</tr> </tr>
</tbody> </tbody>
<tfoot> <tfoot>
<tr align="right"> <tr align="right">
<td colspan="8"> <td colspan="8">
<h6>:copyright: 2019 - <a href="mailto:admin@ferretrenaud.fr">FERRET Renaud</a></h6> <h6>:copyright: 2019 - <a href="mailto:admin@ferretrenaud.fr">FERRET Renaud</a></h6>
</td> </td>
</tr> </tr>
</tfoot> </tfoot>
</table> </table>
*** ***
# La base de données en MySQL # La base de données en MySQL
Vous avez deux options ici, la plus simple est de faire usage de Docker afin de lancer une base conteneurisée. La seconde d'installer MySQL. Vous avez deux options ici, la plus simple est de faire usage de Docker afin de lancer une base conteneurisée. La seconde d'installer MySQL.
Dans tous les cas, votre projet Java devra indiquer le driver dont il a besoin. Dans tous les cas, votre projet Java devra indiquer le driver dont il a besoin.
## Installer Docker ## Installer Docker
Si Docker n'est pas disponible sur votre machine, vous devrez l'installer. Si Docker n'est pas disponible sur votre machine, vous devrez l'installer.
Suivez les informations disponibles sur [https://docs.docker.com/get-docker/](https://docs.docker.com/get-docker/) Suivez les informations disponibles sur [https://docs.docker.com/get-docker/](https://docs.docker.com/get-docker/)
Sous Windows, n'oubliez surtout pas d'installer au moins une distribution WSL2 (en principe c'est ce que vous demandera docker au premier lancement, voir [ici](https://learn.microsoft.com/fr-fr/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package)) Sous Windows, n'oubliez surtout pas d'installer au moins une distribution WSL2 (en principe c'est ce que vous demandera docker au premier lancement, voir [ici](https://learn.microsoft.com/fr-fr/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package))
![image](uploads/034f38215e29f599eae35b0d8ce35601/image.png) ![image](uploads/034f38215e29f599eae35b0d8ce35601/image.png)
Pour ceux qui n'aiment pas lire : Pour ceux qui n'aiment pas lire :
- En Anglais : [https://www.youtube.com/watch?v=jPdIRX6q4jA&list=PLy7NrYWoggjzfAHlUusx2wuDwfCrmJYcs](https://www.youtube.com/watch?v=jPdIRX6q4jA&list=PLy7NrYWoggjzfAHlUusx2wuDwfCrmJYcs) - En Anglais : [https://www.youtube.com/watch?v=jPdIRX6q4jA&list=PLy7NrYWoggjzfAHlUusx2wuDwfCrmJYcs](https://www.youtube.com/watch?v=jPdIRX6q4jA&list=PLy7NrYWoggjzfAHlUusx2wuDwfCrmJYcs)
- En français : [https://xavki.blog/docker-tutoriaux-francais/](https://xavki.blog/docker-tutoriaux-francais/) - En français : [https://xavki.blog/docker-tutoriaux-francais/](https://xavki.blog/docker-tutoriaux-francais/)
Note : attention si votre machine n'est pas très puissante, cette approche peut s'avérer plus lente que d'installer tous les programmes (Java, Maven ...). Note : attention si votre machine n'est pas très puissante, cette approche peut s'avérer plus lente que d'installer tous les programmes (Java, Maven ...).
MySQL s'utilisera en se plaçant dans le dossier `_docker\mysql` MySQL s'utilisera en se plaçant dans le dossier `_docker\mysql`
### Lancer le docker ### Lancer le docker
Une fois docker installé, dans le dossier `_docker\mysql`, tapez la commande : Une fois docker installé, dans le dossier `_docker\mysql`, tapez la commande :
`docker-compose up` `docker compose up --build`
Soyez patient, les deux images vont se construire pour la première fois. Soyez patient, les deux images vont se construire pour la première fois.
Cela peut prendre 5 à 10 minutes (voir plus si votre réseau est lent ...). N'hésitez pas à regarder dans l'outil docker desktop pour voir si les conteneurs sont disponibles. Cela peut prendre 5 à 10 minutes (voir plus si votre réseau est lent ...). N'hésitez pas à regarder dans l'outil docker desktop pour voir si les conteneurs sont disponibles.
Notez que MySQL vient aussi avec un conteneur PhpMyAdmin afin de consulter la base de données via un navigateur WEB. Notez que MySQL vient aussi avec un conteneur d'administration [AdminerEvo](https://docs.adminerevo.org/) afin de consulter la base de données via un navigateur WEB.
Il n'est PAS nécessaire d'installer MySQL. Il n'est PAS nécessaire d'installer MySQL.
## Installation MySQL ## Installation MySQL
Ne suivez cette section que si vous n'avez pas fait usage de Docker. Ne suivez cette section que si vous n'avez pas fait usage de Docker.
Si vous êtes sous Windows, n'oubliez pas que MySQL a besoin des redistribuables C++ 2015, vous devrez certainement les télécharger et les installer **avant** d'installer MySQL. Ils sont disponibles [ici](https://www.microsoft.com/fr-FR/download/details.aspx?id=52685). Prenez la version en correspondance avec votre OS (ou installer les deux si vous ne savez pas). Si vous êtes sous Windows, n'oubliez pas que MySQL a besoin des redistribuables C++ 2015, vous devrez certainement les télécharger et les installer **avant** d'installer MySQL. Ils sont disponibles [ici](https://www.microsoft.com/fr-FR/download/details.aspx?id=52685). Prenez la version en correspondance avec votre OS (ou installer les deux si vous ne savez pas).
Installez une base MySQL sur votre ordinateur, téléchargez [MySQL](https://dev.mysql.com/downloads/) sur [https://dev.mysql.com/downloads/](https://dev.mysql.com/downloads/). Installez une base MySQL sur votre ordinateur, téléchargez [MySQL](https://dev.mysql.com/downloads/) sur [https://dev.mysql.com/downloads/](https://dev.mysql.com/downloads/).
Prenez la version **MySQL Community**. Prenez la version **MySQL Community**.
Lors de l'installation, **notez bien** le mot de passe que vous aurez choisi pour l'utilisateur root (restez simple, on est en dev). Lors de l'installation, **notez bien** le mot de passe que vous aurez choisi pour l'utilisateur root (restez simple, on est en dev).
### Important ### Important
Vous pouvez installer MySQL 8, ou rester sur une version 5. Vous pouvez installer MySQL 8, ou rester sur une version 5.
Ne pas installer un [WAMP](https://www.wampserver.com/) ou LAMP ou XAMP juste pour MySQL, une enclume ne sert pas à planter un clou (en plus vous ne serez pas forcément en MySQL mais plus en MariaDB). Ne pas installer un [WAMP](https://www.wampserver.com/) ou LAMP ou XAMP juste pour MySQL, une enclume ne sert pas à planter un clou (en plus vous ne serez pas forcément en MySQL mais plus en MariaDB).
### Client pour votre base de données ### Client pour votre base de données
Si vous êtes sous Windows et avez sélectionnez la grosse archive lors de l'installation, vous devriez avoir Workbench d'installé. Sinon, vous pouvez l'installer en plus en le téléchargeant [ici](https://dev.mysql.com/downloads/workbench/) Si vous êtes sous Windows et avez sélectionnez la grosse archive lors de l'installation, vous devriez avoir Workbench d'installé. Sinon, vous pouvez l'installer en plus en le téléchargeant [ici](https://dev.mysql.com/downloads/workbench/)
Au cas où Workbench ne vous convient pas, vous pouvez installer l'un de ceux la : Au cas où Workbench ne vous convient pas, vous pouvez installer l'un de ceux la :
* [DBeaver](https://dbeaver.io/) * [DBeaver](https://dbeaver.io/)
* [Heidi SQL](https://www.heidisql.com/) * [Heidi SQL](https://www.heidisql.com/)
* [SQuirreL SQL](http://squirrel-sql.sourceforge.net/) * [SQuirreL SQL](http://squirrel-sql.sourceforge.net/)
# Chargement des données # Chargement des données
Lancez l'utilitaire Workbench et importez la base qui se trouve dans le dossier db de l'exercice, fichier **exercices\_database\banque_mysql.sql**. Lancez l'utilitaire Workbench et importez la base qui se trouve dans le dossier db de l'exercice, fichier **exercices\_database\banque_mysql.sql**.
![00](uploads/f1c437331f16aa1cd6d02d106e1d51db/00.png) ![00](uploads/f1c437331f16aa1cd6d02d106e1d51db/00.png)
![01](uploads/e96132fb6d6c0f8f16f64e0b4328e087/01.png) ![01](uploads/e96132fb6d6c0f8f16f64e0b4328e087/01.png)
![03](uploads/ff766570fe1de12261490d0757e0c886/03.png) ![03](uploads/ff766570fe1de12261490d0757e0c886/03.png)
### Identification du driver ### Identification du driver
Hormis dans le cas de ODBC Windows, il nous faut un driver afin que le code Java puisse accéder aux données qui sont dans la base. Hormis dans le cas de ODBC Windows, il nous faut un driver afin que le code Java puisse accéder aux données qui sont dans la base.
Le driver est dépendant de la base, vous en avez pour Oracle, DB2, MySQL, SQL Server ..., on peut les télécharger sur le site de chaque éditeur. Le driver est dépendant de la base, vous en avez pour Oracle, DB2, MySQL, SQL Server ..., on peut les télécharger sur le site de chaque éditeur.
Regardez sur le site de l'éditeur de votre base, la version et le nom du driver Java qui vous est nécessaire. Regardez sur le site de l'éditeur de votre base, la version et le nom du driver Java qui vous est nécessaire.
Pour MySQL ils se trouvent sur [https://dev.mysql.com/downloads/connector/j/](https://dev.mysql.com/downloads/connector/j/). Pour MySQL ils se trouvent sur [https://dev.mysql.com/downloads/connector/j/](https://dev.mysql.com/downloads/connector/j/).
Vous pouvez aussi regarder sur le repository Maven (en tapant dans Google 'maven mysql'). Vous pouvez aussi regarder sur le repository Maven (en tapant dans Google 'maven mysql').
# Ajout du driver pour Maven # Ajout du driver pour Maven
Créez un nouveau projet Maven dans Eclipse, **projetBd**. Créez un nouveau projet Maven dans Eclipse, **projetBd**.
Vous pouvez reprendre le même fichier **pom.xml** que dans les exercices précédents. Vous pouvez reprendre le même fichier **pom.xml** que dans les exercices précédents.
Soyez vigilent sur : Soyez vigilent sur :
* la version de votre Java (propriétés Maven) * la version de votre Java (propriétés Maven)
* l'artefactId de votre projet * l'artefactId de votre projet
Indiquez dans votre fichier **pom.xml** la dépendance vers le driver Java via l'usage des *dependency* : Indiquez dans votre fichier **pom.xml** la dépendance vers le driver Java via l'usage des *dependency* :
```xml ```xml
<project> <project>
... ...
<dependencies> <dependencies>
<!-- Pour la base MySQL 8.0.2x --> <!-- Pour la base MySQL 8.0.2x -->
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
<!-- Vous pouvez changer le numero de version --> <!-- Vous pouvez changer le numero de version -->
<version>8.0.27</version> <version>8.0.27</version>
</dependency> </dependency>
<!-- Pour la base MySQL 8.0.3x --> <!-- Pour la base MySQL 8.0.3x -->
<dependency> <dependency>
<groupId>com.mysql</groupId> <groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId> <artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version> <version>8.4.0</version>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>
``` ```
*Remarque* : la version 8 du driver est compatible avec la version 5 de MySQL. *Remarque* : la version 8 du driver est compatible avec la version 5 de MySQL.
*Rappel* : Après toutes modifications faites sur le fichier **pom.xml**, faites un clic droit sur votre projet puis `Maven - Update Project ...` *Rappel* : Après toutes modifications faites sur le fichier **pom.xml**, faites un clic droit sur votre projet puis `Maven - Update Project ...`
*** ***
<table> <table>
<thead> <thead>
<tr> <tr>
<th width="200px"><h6>[:rewind: Exo Précédent](/Exo03-Banque/1%5D-Banque-p1)</h6></th> <th width="200px"><h6>[:rewind: Exo Précédent](/Exo03-Banque/1%5D-Banque-p1)</h6></th>
<th colspan="6" width="600px"><h1 align="center">04 - Java - JDBC</h1></th> <th colspan="6" width="600px"><h1 align="center">04 - Java - JDBC</h1></th>
<th width="200px"><h6 align="right">[Exo Suivant :fast_forward:](/Exo05-IO/1%5D-IO-Fichiers)</h6></th> <th width="200px"><h6 align="right">[Exo Suivant :fast_forward:](/Exo05-IO/1%5D-IO-Fichiers)</h6></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr> <tr>
<td>&nbsp;</td> <td>&nbsp;</td>
<td align="center">[:one:](/Exo04-JDBC/1%5D-JDBC-Base)<br/>JDBC</td> <td align="center">[:one:](/Exo04-JDBC/1%5D-JDBC-Base)<br/>JDBC</td>
<td align="center">:white_check_mark:<br/>MySQL</td> <td align="center">:white_check_mark:<br/>MySQL</td>
<td align="center">[:three:](/Exo04-JDBC/3%5D-HSQL)<br/>HSQL</td> <td align="center">[:three:](/Exo04-JDBC/3%5D-HSQL)<br/>HSQL</td>
<td align="center">[:four:](/Exo04-JDBC/4%5D-PostgreSQL)<br/>PostgreSQL</td> <td align="center">[:four:](/Exo04-JDBC/4%5D-PostgreSQL)<br/>PostgreSQL</td>
<td align="center">[:five:](/Exo04-JDBC/5%5D-Premiere-classe-Java)<br/>Une classe Java</td> <td align="center">[:five:](/Exo04-JDBC/5%5D-Premiere-classe-Java)<br/>Une classe Java</td>
<td align="center">[:six:](/Exo04-JDBC/6%5D-Banque-p6)<br/>Partie 6</td> <td align="center">[:six:](/Exo04-JDBC/6%5D-Banque-p6)<br/>Partie 6</td>
<td>&nbsp;</td> <td>&nbsp;</td>
</tr> </tr>
</tbody> </tbody>
<tfoot> <tfoot>
<tr align="right"> <tr align="right">
<td colspan="8"> <td colspan="8">
<h6>:copyright: 2019 - <a href="mailto:admin@ferretrenaud.fr">FERRET Renaud</a></h6> <h6>:copyright: 2019 - <a href="mailto:admin@ferretrenaud.fr">FERRET Renaud</a></h6>
</td> </td>
</tr> </tr>
</tfoot> </tfoot>
</table> </table>
\ No newline at end of file