diff --git a/.idea/libraries/slf4j_api_1_7_36.xml b/.idea/libraries/slf4j_api_1_7_36.xml
new file mode 100644
index 0000000..8725e01
--- /dev/null
+++ b/.idea/libraries/slf4j_api_1_7_36.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/slf4j_simple_1_7_36.xml b/.idea/libraries/slf4j_simple_1_7_36.xml
new file mode 100644
index 0000000..3b7711b
--- /dev/null
+++ b/.idea/libraries/slf4j_simple_1_7_36.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/sqlite_jdbc_3_45_1_0.xml b/.idea/libraries/sqlite_jdbc_3_45_1_0.xml
index 807f484..4e8af3e 100644
--- a/.idea/libraries/sqlite_jdbc_3_45_1_0.xml
+++ b/.idea/libraries/sqlite_jdbc_3_45_1_0.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/lib/slf4j-api-1.7.36.jar b/lib/slf4j-api-1.7.36.jar
new file mode 100644
index 0000000..7d3ce68
Binary files /dev/null and b/lib/slf4j-api-1.7.36.jar differ
diff --git a/lib/slf4j-simple-1.7.36.jar b/lib/slf4j-simple-1.7.36.jar
new file mode 100644
index 0000000..ef831a8
Binary files /dev/null and b/lib/slf4j-simple-1.7.36.jar differ
diff --git a/lib/sqlite-jdbc-3.45.1.0.jar b/lib/sqlite-jdbc-3.45.1.0.jar
new file mode 100644
index 0000000..6a484ac
Binary files /dev/null and b/lib/sqlite-jdbc-3.45.1.0.jar differ
diff --git a/linea_scores.db b/linea_scores.db
new file mode 100644
index 0000000..a8a591c
Binary files /dev/null and b/linea_scores.db differ
diff --git a/projet-dev.iml b/projet-dev.iml
index 80415a1..1631ba0 100644
--- a/projet-dev.iml
+++ b/projet-dev.iml
@@ -7,6 +7,8 @@
-
+
+
+
\ No newline at end of file
diff --git a/src/GestionnaireScore.java b/src/GestionnaireScore.java
index 5b937b7..7abd497 100644
--- a/src/GestionnaireScore.java
+++ b/src/GestionnaireScore.java
@@ -3,30 +3,65 @@ package linea;
import java.sql.*;
public class GestionnaireScore {
- private String url = "jdbc:sqlite:linea_scores.db";
+
+ private static final String URL = "jdbc:sqlite:linea_scores.db";
public GestionnaireScore() {
- // Au démarrage, on crée la table si elle n'existe pas
- try (Connection conn = DriverManager.getConnection(url)) {
+ // 1) Charger explicitement le driver SQLite JDBC
+ try {
+ Class.forName("org.sqlite.JDBC");
+ System.out.println("[BDD] Driver SQLite JDBC chargé correctement (org.sqlite.JDBC).");
+ } catch (ClassNotFoundException e) {
+ System.err.println("[BDD] ERREUR : impossible de charger le driver SQLite JDBC (org.sqlite.JDBC).");
+ System.err.println("Vérifie que le fichier sqlite-jdbc-xxx.jar est bien présent dans le classpath.");
+ e.printStackTrace();
+ }
+
+ // 2) Créer / vérifier la table au démarrage
+ try (Connection conn = DriverManager.getConnection(URL)) {
+ if (conn == null) {
+ System.err.println("[BDD] ERREUR : connexion JDBC nulle lors de l'initialisation.");
+ return;
+ }
+
String sql = "CREATE TABLE IF NOT EXISTS scores (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT," +
- "nom TEXT," +
- "points INTEGER);";
- Statement stmt = conn.createStatement();
- stmt.execute(sql);
+ "nom TEXT NOT NULL," +
+ "points INTEGER NOT NULL" +
+ ");";
+
+ try (Statement stmt = conn.createStatement()) {
+ stmt.execute(sql);
+ }
+
+ System.out.println("[BDD] Table 'scores' vérifiée/créée avec succès.");
} catch (SQLException e) {
+ System.err.println("[BDD] ERREUR SQL lors de la création ou vérification de la table 'scores'.");
+ System.err.println("Message SQL : " + e.getMessage());
e.printStackTrace();
}
}
public void sauvegarderScore(String nom, int points) {
+ if (nom == null || nom.trim().isEmpty()) {
+ System.err.println("[BDD] Tentative d'enregistrer un score avec un nom vide. Opération annulée.");
+ return;
+ }
+
String sql = "INSERT INTO scores(nom, points) VALUES(?, ?)";
- try (Connection conn = DriverManager.getConnection(url);
+
+ try (Connection conn = DriverManager.getConnection(URL);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
- pstmt.setString(1, nom);
+
+ pstmt.setString(1, nom.trim());
pstmt.setInt(2, points);
- pstmt.executeUpdate();
+ int lignes = pstmt.executeUpdate();
+
+ System.out.println("[BDD] Score enregistré pour '" + nom + "' (" + points +
+ " points). Lignes affectées : " + lignes);
} catch (SQLException e) {
+ System.err.println("[BDD] ERREUR SQL lors de l'enregistrement du score.");
+ System.err.println("Message SQL : " + e.getMessage());
e.printStackTrace();
}
}
@@ -35,17 +70,34 @@ public class GestionnaireScore {
StringBuilder sb = new StringBuilder("--- TOP 10 SCORES ---\n");
String sql = "SELECT nom, points FROM scores ORDER BY points DESC LIMIT 10";
- try (Connection conn = DriverManager.getConnection(url);
+ try (Connection conn = DriverManager.getConnection(URL);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
+ boolean auMoinsUn = false;
+
while (rs.next()) {
- sb.append(rs.getString("nom")).append(" : ")
- .append(rs.getInt("points")).append("\n");
+ auMoinsUn = true;
+ sb.append(rs.getString("nom"))
+ .append(" : ")
+ .append(rs.getInt("points"))
+ .append("\n");
}
+
+ if (!auMoinsUn) {
+ sb.append("(Aucun score enregistré pour le moment)\n");
+ }
+
} catch (SQLException e) {
- return "Erreur lors de la lecture des scores.";
+ System.err.println("[BDD] ERREUR SQL lors de la lecture des scores.");
+ System.err.println("Message SQL : " + e.getMessage());
+ e.printStackTrace();
+
+ return "Erreur lors de la lecture des scores.\n" +
+ "Détail : " + e.getMessage() + "\n" +
+ "Consulte la console pour la pile complète (stack trace).";
}
+
return sb.toString();
}
}
\ No newline at end of file