init 15: Initialisation et extraction Bdd avec BddInit
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
@@ -52,7 +64,7 @@ public class NiveauxDataConnect {
|
||||
return conn;
|
||||
} catch (SQLException e) {
|
||||
System.err.println("Erreur lors de la connexion à la base de données : " + e.getMessage());
|
||||
return null;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
37
linea/linea/bddInit.java
Normal file
37
linea/linea/bddInit.java
Normal 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");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user