Comme le titre l'indique, j'essaie de récupérer un modèle de tableau à partir d'un ensemble de résultats de données. Je suis encore en train d'apprendre à utiliser les bases de données et j'utilise actuellement ce code :
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
public class DbUtils {
public static TableModel resultSetToTableModel(ResultSet rs) {
try {
ResultSetMetaData metaData = rs.getMetaData();
int numberOfColumns = metaData.getColumnCount();
Vector columnNames = new Vector();
// Get the column names
for (int column = 0; column < numberOfColumns; column++) {
columnNames.addElement(metaData.getColumnLabel(column + 1));
}
// Get all rows.
Vector rows = new Vector();
while (rs.next()) {
Vector newRow = new Vector();
for (int i = 1; i <= numberOfColumns; i++) {
newRow.addElement(rs.getObject(i));
}
rows.addElement(newRow);
}
return new DefaultTableModel(rows, columnNames);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
Mais le problème que j'ai maintenant est que chaque fois que le programme atteint la ligne pour récupérer le nombre de colonnes, il me donne l'erreur "Inconsistent Internal State". Liste complète ici :
java.lang.IllegalStateException: SQLite JDBC: inconsistent internal state
at org.sqlite.core.CoreResultSet.checkCol(CoreResultSet.java:81)
at org.sqlite.jdbc3.JDBC3ResultSet.getColumnCount(JDBC3ResultSet.java:699)
at DbUtils.resultSetToTableModel(DbUtils.java:14)
at Window.main(Window.java:170)
J'ai vérifié la seule autre question relative à ce sujet sur stack overflow mais je n'ai rien trouvé. Y a-t-il quelque chose que je puisse faire ?
Merci !