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.setLayout(null);
|
||||||
ecran.add(boutonScores);
|
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
|
// Démarrage du timer, qui rythmera l'animation
|
||||||
horloge = new Timer(40, this);
|
horloge = new Timer(40, this);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package linea;
|
package linea;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.DriverManager;
|
import java.sql.DriverManager;
|
||||||
import java.sql.ResultSet;
|
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 crée la table niveau si elle n'existe pas déjà
|
||||||
// Il insérer les niveaux dans la table niveau directement
|
// Il insérer les niveaux dans la table niveau directement
|
||||||
// Pour éviter à le faire à chaque fois que le jeu est lancé
|
// 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 {
|
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
|
// Initialisation de la connexion à la base de données
|
||||||
Connection conn = getConnection();
|
Connection conn = getConnection();
|
||||||
if (conn != null) {
|
if (conn != 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