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...
Voici la sortie dans la console
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.