2017-03-31 13 views
1

結果セットのメタデータからcoulmnを取得しようとすると問題があるようです。エラーはスレッド「AWT-EventQueue-0」の例外です。java.lang.IllegalStateException:SQLite JDBC:不整合な内部状態。ResultSetのメタデータからgetColumnCount()を呼び出すときのエラー

考えられるのは、このテーブルモデルを使用して、データベースクエリの結果をJTableに取り込むことです。しかし、私は上記のエラーを取得します。

関連するコードは次のとおりです。

public DefaultTableModel buildFlightModel() 
      throws SQLException { 

     query="SELECT Airline.AirlineName, Flight.FlightID, Flight.Location, Flight.Destination, Flight.ArriveTime, Flight.LeaveTime FROM Flight INNER JOIN Airline ON Airline.AirlineID=Flight.AirlineID;"; 

      try { 
       Class.forName("org.sqlite.JDBC"); 
       c = DriverManager.getConnection("jdbc:sqlite:coursework.db"); 
       stmt = c.createStatement(); 
       rs=stmt.executeQuery(query); 
       while(rs.next()){ 
        //System.out.println(s); 
       } 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     ResultSetMetaData metaData = rs.getMetaData(); 

     // names of columns 
     Vector<String> columnNames = new Vector<String>(); 
     int columnCount = metaData.getColumnCount(); 
     for (int column = 1; column <= columnCount; column++) { 
      columnNames.add(metaData.getColumnName(column)); 
     } 

     // data of the table 
     Vector<Vector<Object>> data = new Vector<Vector<Object>>(); 
     while (rs.next()) { 
      Vector<Object> vector = new Vector<Object>(); 
      for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) { 
       vector.add(rs.getObject(columnIndex)); 
      } 
      data.add(vector); 
     } 

     return new DefaultTableModel(data, columnNames); 

    } 

任意の考え/アイデア/ヘルプは深くいただければ幸いです。ありがとうございました。

+1

http://stackoverflow.com/questions/25108764/gooddata-metadata-extraction-failed-sqlite-jdbc-inconsistent-internal-state –

答えて

0

この例外は、ResultSet.isclose() == trueの場合にスローされます。 Read-Loopを開始する前にMetaDataCloneを作成してください。

+0

適切な書式設定を使用してください。 – SteveFest

関連する問題