Update 2] MySQL authored by Ferret Renaud's avatar Ferret Renaud
<table>
<thead>
<tr>
<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 width="200px"><h6 align="right">[Exo Suivant :fast_forward:](/Exo05-IO/1%5D-IO-Fichiers)</h6></th>
</tr>
</thead>
<tbody>
<tr>
<td>&nbsp;</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">[:three:](/Exo04-JDBC/3%5D-HSQL)<br/>HSQL</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">[:six:](/Exo04-JDBC/6%5D-Banque-p6)<br/>Partie 6</td>
<td>&nbsp;</td>
</tr>
</tbody>
<tfoot>
<tr align="right">
<td colspan="8">
<h6>:copyright: 2019 - <a href="mailto:admin@ferretrenaud.fr">FERRET Renaud</a></h6>
</td>
</tr>
</tfoot>
</table>
***
# 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.
Dans tous les cas, votre projet Java devra indiquer le driver dont il a besoin.
## Installer Docker
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/)
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)
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 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 ...).
MySQL s'utilisera en se plaçant dans le dossier `_docker\mysql`
### Lancer le docker
Une fois docker installé, dans le dossier `_docker\mysql`, tapez la commande :
`docker-compose up`
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.
Notez que MySQL vient aussi avec un conteneur PhpMyAdmin afin de consulter la base de données via un navigateur WEB.
Il n'est PAS nécessaire d'installer MySQL.
## Installation MySQL
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).
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**.
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
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).
### 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/)
Au cas où Workbench ne vous convient pas, vous pouvez installer l'un de ceux la :
* [DBeaver](https://dbeaver.io/)
* [Heidi SQL](https://www.heidisql.com/)
* [SQuirreL SQL](http://squirrel-sql.sourceforge.net/)
# 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**.
![00](uploads/f1c437331f16aa1cd6d02d106e1d51db/00.png)
![01](uploads/e96132fb6d6c0f8f16f64e0b4328e087/01.png)
![03](uploads/ff766570fe1de12261490d0757e0c886/03.png)
### 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.
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.
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').
# Ajout du driver pour Maven
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.
Soyez vigilent sur :
* la version de votre Java (propriétés Maven)
* l'artefactId de votre projet
Indiquez dans votre fichier **pom.xml** la dépendance vers le driver Java via l'usage des *dependency* :
```xml
<project>
...
<dependencies>
<!-- Pour la base MySQL 8.0.2x -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!-- Vous pouvez changer le numero de version -->
<version>8.0.27</version>
</dependency>
<!-- Pour la base MySQL 8.0.3x -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
</project>
```
*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 ...`
***
<table>
<thead>
<tr>
<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 width="200px"><h6 align="right">[Exo Suivant :fast_forward:](/Exo05-IO/1%5D-IO-Fichiers)</h6></th>
</tr>
</thead>
<tbody>
<tr>
<td>&nbsp;</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">[:three:](/Exo04-JDBC/3%5D-HSQL)<br/>HSQL</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">[:six:](/Exo04-JDBC/6%5D-Banque-p6)<br/>Partie 6</td>
<td>&nbsp;</td>
</tr>
</tbody>
<tfoot>
<tr align="right">
<td colspan="8">
<h6>:copyright: 2019 - <a href="mailto:admin@ferretrenaud.fr">FERRET Renaud</a></h6>
</td>
</tr>
</tfoot>
<table>
<thead>
<tr>
<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 width="200px"><h6 align="right">[Exo Suivant :fast_forward:](/Exo05-IO/1%5D-IO-Fichiers)</h6></th>
</tr>
</thead>
<tbody>
<tr>
<td>&nbsp;</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">[:three:](/Exo04-JDBC/3%5D-HSQL)<br/>HSQL</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">[:six:](/Exo04-JDBC/6%5D-Banque-p6)<br/>Partie 6</td>
<td>&nbsp;</td>
</tr>
</tbody>
<tfoot>
<tr align="right">
<td colspan="8">
<h6>:copyright: 2019 - <a href="mailto:admin@ferretrenaud.fr">FERRET Renaud</a></h6>
</td>
</tr>
</tfoot>
</table>
***
# 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.
Dans tous les cas, votre projet Java devra indiquer le driver dont il a besoin.
## Installer Docker
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/)
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)
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 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 ...).
MySQL s'utilisera en se plaçant dans le dossier `_docker\mysql`
### Lancer le docker
Une fois docker installé, dans le dossier `_docker\mysql`, tapez la commande :
`docker compose up --build`
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.
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.
## Installation MySQL
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).
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**.
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
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).
### 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/)
Au cas où Workbench ne vous convient pas, vous pouvez installer l'un de ceux la :
* [DBeaver](https://dbeaver.io/)
* [Heidi SQL](https://www.heidisql.com/)
* [SQuirreL SQL](http://squirrel-sql.sourceforge.net/)
# 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**.
![00](uploads/f1c437331f16aa1cd6d02d106e1d51db/00.png)
![01](uploads/e96132fb6d6c0f8f16f64e0b4328e087/01.png)
![03](uploads/ff766570fe1de12261490d0757e0c886/03.png)
### 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.
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.
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').
# Ajout du driver pour Maven
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.
Soyez vigilent sur :
* la version de votre Java (propriétés Maven)
* l'artefactId de votre projet
Indiquez dans votre fichier **pom.xml** la dépendance vers le driver Java via l'usage des *dependency* :
```xml
<project>
...
<dependencies>
<!-- Pour la base MySQL 8.0.2x -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!-- Vous pouvez changer le numero de version -->
<version>8.0.27</version>
</dependency>
<!-- Pour la base MySQL 8.0.3x -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.4.0</version>
</dependency>
</dependencies>
</project>
```
*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 ...`
***
<table>
<thead>
<tr>
<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 width="200px"><h6 align="right">[Exo Suivant :fast_forward:](/Exo05-IO/1%5D-IO-Fichiers)</h6></th>
</tr>
</thead>
<tbody>
<tr>
<td>&nbsp;</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">[:three:](/Exo04-JDBC/3%5D-HSQL)<br/>HSQL</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">[:six:](/Exo04-JDBC/6%5D-Banque-p6)<br/>Partie 6</td>
<td>&nbsp;</td>
</tr>
</tbody>
<tfoot>
<tr align="right">
<td colspan="8">
<h6>:copyright: 2019 - <a href="mailto:admin@ferretrenaud.fr">FERRET Renaud</a></h6>
</td>
</tr>
</tfoot>
</table>
\ No newline at end of file