SQLite Exception : inconsistent internal state
Bonjour,
j'essaie d'implémenter un AbstractTableModel pour un programme qui utilise une base SQLite.
J'ai un problème avec la méthode getColumnName() qui est incapable de me récupérer les titres de colonnes.
En fait en essayant dans le main ça marche mais depuis ma classe dérivée de AbstractTableModel ça ne passe plus... :roll:
Voici la sortie dans la console
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| run:
Passed Index is 1
État interne incohérent ! Ne peut récupérer les titres de colonnes.
Passed Index is 2
Passed Index is 3
SQLite JDBC: inconsistent internal state
Passed Index is 4
État interne incohérent ! Ne peut récupérer les titres de colonnes.
SQLite JDBC: inconsistent internal state
État interne incohérent ! Ne peut récupérer les titres de colonnes.
SQLite JDBC: inconsistent internal state
État interne incohérent ! Ne peut récupérer les titres de colonnes.
SQLite JDBC: inconsistent internal state |
Voici l'implémentation de getColumnName();
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| @Override
public String getColumnName(int columnIndex) {
try {
String name;
name="column";
int passedIndex = columnIndex+1;
System.out.println("Passed Index is " + new Integer(passedIndex).toString());
ResultSetMetaData meta = this.rs.getMetaData();
if (this.rs != null) {
name = meta.getColumnName(passedIndex);
}
System.out.println("Column name "+name);
return name;
}
catch (Exception e) {
if (e.getMessage().contains("inconsistent internal state")) {
System.err.println("État interne incohérent ! Ne peut récupérer les titres de colonnes.");
System.err.println(e.getMessage());
}
else {
System.out.println(e.getMessage());
}
}
return null;
} |
La ligne incriminée semble être name = meta.getColumnName(passedIndex);
Je passe un ResultSet au constructeur de ma classe modèle et j'ai rajouté des tests pour m'assurer que le ResultSet n'est pas null et malgré tout j'ai une erreur.
Je ne comprends pas et n'arrive pas à trouver ce qui coince. Si j'utilise le même principe dans le main ça marche impec...
Voici l'extrait de code du main :
Code:
1 2 3 4 5
| ResultSetMetaData rsmd = rs.getMetaData();
System.out.println(rsmd.getColumnName(1));
System.out.println(rsmd.getColumnName(2));
System.out.println(rsmd.getColumnName(3));
System.out.println(rsmd.getColumnName(4)); |
Voici la sortie obtenue :
Code:
1 2 3 4 5
| run:
id
lastName
firstName
age |
Voilà.
En vous remerciant d'avance et dans l'espoir que quelqu'un puisse m'éclairer sur cette situation. ;)