init 15: Initialisation et extraction Bdd avec BddInit

This commit is contained in:
2026-03-02 13:16:24 +01:00
parent e6f771ba3b
commit fe7c7f9a9f
3 changed files with 61 additions and 1 deletions

View File

@@ -168,6 +168,17 @@ public class Jeu implements KeyListener, ActionListener{
ecran.setLayout(null);
ecran.add(boutonScores);
//propriétés dont on aura besoin pour utiliser NiveauxDataConnect
//---------------------------------------------------------------------------------
// C'est ici qu'on appelle NiveauxDataConnect pour initialiser la connexion à la base de données des niveaux
//--------------------------------------------------------------------------------
NiveauxDataConnect niveau = null;
try {
niveau = new NiveauxDataConnect();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
// Démarrage du timer, qui rythmera l'animation
horloge = new Timer(40, this);

View File

@@ -1,5 +1,6 @@
package linea;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
@@ -20,8 +21,19 @@ public class NiveauxDataConnect {
// Il crée la table niveau si elle n'existe pas déjà
// Il insérer les niveaux dans la table niveau directement
// Pour éviter à le faire à chaque fois que le jeu est lancé
// NB : Le fichier de la base de donnée est dans le .jar
// Il est nécessaire de l'initialiser afin de pouvoir le lire et écrire dessus
// Car dans la .jar il est en lecture seule
// Il faut donc le copier dans un endroit où il peut être modifié, par exemple dans le dossier du projet
// ----------------------------------------------------------------
public NiveauxDataConnect() throws ClassNotFoundException {
// Initialisation de la base de données dans le répertoire courant de l'utilisateur
// Cela permet de pouvoir lire et écrire sur la base de données, contrairement à la base de données
try {
bddInit.init();
}catch (IOException e) {
throw new RuntimeException("Erreur lors de l'initialisation de la base de données : " + e.getMessage());
}
// Initialisation de la connexion à la base de données
Connection conn = getConnection();
if (conn != null) {

37
linea/linea/bddInit.java Normal file
View File

@@ -0,0 +1,37 @@
package linea;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
//--------------------------------------------------------------------------
// Classe pour l'initialisation de la base de données
// Elle est utilisée pour copier la base de données depuis le .jar vers le répertoire courant de l'utilisateur
// Cela permet de pouvoir lire et écrire sur la base de données, contrairement à la base de données dans le .jar qui est en lecture seule
//--------------------------------------------------------------------------
public class bddInit {
public static void init() throws IOException {
String dbFileName = "Niveaux.db";
// On crée l'objet qui correspond au fichier de la base de données dans le répertoire courant de l'utilisateur
File dbFile = new File(dbFileName);
// Si le fichier de la base de données n'existe pas, on le crée en le copiant depuis le .jar
if(!dbFile.exists()){
// Récupération de la BDD du .jar ou "main/ressources" dans le projet
InputStream is = bddInit.class.getResourceAsStream("/" + dbFileName);
// Si le fichier est introuvable dans le .jar, on affiche une erreur
if (is == null) {
throw new FileNotFoundException("La base de données " + dbFileName + " est introuvable dans le .jar");
}
// Copie du fichier de la base de données depuis le .jar vers le répertoire courant de l'utilisateur
Files.copy(is, dbFile.toPath());
// Fermeture du flux d'entrée
is.close();
System.out.println("Base de données " + dbFileName + " copiée depuis le .jar vers le répertoire courant de l'utilisateur");
}
}
}