Hallo Allerseits,
ich programmiere gerade einen SQL-Browser und hänge an folgendem Problem. Ich habe eine GUI welche den Befehl an einen DBConnector sendet um zur DB zu "connecten". In der DBConnectorklasse führe ich auch den execute Befehl für die Statements aus. Nun will ich das ResultSet was ich danach erhalte in einem DefaultTableModel anzeigen. Die Aufbereitung des DFTs soll in einer Extraklasse passieren (Preparer). Nun will ich von der Preparerklasse aus auf das ResultSetMetaData zugreifen, um die Spaltenanzahl des ResultSets abzufragen. Doch nun erhalte ich folgende Fehlermeldung nach dem ich den Code aus der Preparerklasse ausgeführt habe:
Wie kann ich nun auf das ResultSetMetaData zugreifen um getColumnCount() auszuführen?
Preparer
DBConnector
Hoffe auf Baldige Hilfe,
Mit freundlichen Grüßen
burny
ich programmiere gerade einen SQL-Browser und hänge an folgendem Problem. Ich habe eine GUI welche den Befehl an einen DBConnector sendet um zur DB zu "connecten". In der DBConnectorklasse führe ich auch den execute Befehl für die Statements aus. Nun will ich das ResultSet was ich danach erhalte in einem DefaultTableModel anzeigen. Die Aufbereitung des DFTs soll in einer Extraklasse passieren (Preparer). Nun will ich von der Preparerklasse aus auf das ResultSetMetaData zugreifen, um die Spaltenanzahl des ResultSets abzufragen. Doch nun erhalte ich folgende Fehlermeldung nach dem ich den Code aus der Preparerklasse ausgeführt habe:
Java:
Exception in thread "main" java.lang.IllegalStateException: SQLite JDBC: inconsistent internal state
at org.sqlite.RS.checkCol(RS.java:62)
at org.sqlite.RS.getColumnCount(RS.java:319)
at MainFiles.Preparer.<init>(Preparer.java:18)
at MainFiles.Preparer.main(Preparer.java:46)
Wie kann ich nun auf das ResultSetMetaData zugreifen um getColumnCount() auszuführen?
Preparer
Java:
private DBConnector dBIns;
private ResultSetMetaData meta;
public Preparer() {
dBIns = DBConnector.getInstance();
dBIns.connect();
dBIns.fireStatement("select last_name from president where last_name = 'Bush'");
meta = dBIns.getResultSetMetaData();
try {
meta.getColumnCount();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dBIns.disconnect();
}
DBConnector
Java:
private ResultSetMetaData meta;
private ResultSet resultSet;
public void fireStatement(String inputstat){
try {
//Um Befehle an die DB zu schicken brauchen wir ein Statement Objekt
Statement stat = conn.createStatement();
/*
* Das SQL-Statement wird ueber executeQuery() abgeschickt und in einem
* ResultSet gespeichert.
*/
resultSet = stat.executeQuery(inputstat);
/*ResultSetMetaData gibt uns die Tabelleninformationen
*wieder (Spaltenanzahl, Spaltennamen, ...)
*/
meta = resultSet.getMetaData();
System.out.println(meta.getColumnCount());
for (int i = 1; i < meta.getColumnCount(); i++){
System.out.println("Spalte: " + meta.getColumnName(i));
}
//Die abgefragten Ergebnisse werden auf der Konsole ausgegeben
while(resultSet.next()){
for(int i = 1; i <= meta.getColumnCount(); i++){
System.out.print(resultSet.getString(i));
System.out.print("|");
}
System.out.println();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* The method getResultSetMetaData returns the meta data of the table.
* @return Metadata of the table
*/
public ResultSetMetaData getResultSetMetaData(){
return meta;
}
Hoffe auf Baldige Hilfe,
Mit freundlichen Grüßen
burny