0

Swing テーブルに MySQL DB からのデータを入力する必要があります。a.aircraftType問題は、表にすべての列 (および)が表示されないことb.aircraftCategoryです。デバッグ モードで、クエリが正しいデータを返すことを確認しました。では、最終的に一部の列が表示されないのはなぜでしょうか?

    private JTable tbArrivals;
    private QueryTableModelFS mdArrivals;


    mdArrivals = new QueryTableModelFS();       
    tbArrivals = new JTable(mdArrivals);

    private void fillArrivals() {
            mdArrivals.setHost(url); mdArrivals.setDB(db); mdArrivals.setLogin(login); mdArrivals.setPassw(passw);

            String query;

            query = "SELECT a.id,a.flightNum_arr,a.from_ICAO,a.ETA,a.pkId,a.aircraftType,b.aircraftCategory " +
                    "FROM flightschedule a, aircrafts b " +
                    "WHERE a.aircraftType = b.aircraftType;";
            mdArrivals.setQuery(query);
    }


  public void setQuery(String query) {
    cache = new Vector();
    try {
      // Execute the query and store the result set and its metadata
      Connection con = getConnection();
      Statement statement = con.createStatement();
      ResultSet rs = statement.executeQuery(query);
      ResultSetMetaData meta = rs.getMetaData();
      colCount = meta.getColumnCount();
      // Rebuild the headers array with the new column names
      headers = new String[colCount];
      for (int h = 1; h <= colCount; h++) {
        headers[h - 1] = meta.getColumnName(h);
      }
      while (rs.next()) {
        String[] record = new String[colCount];
        for (int i = 0; i < colCount; i++) {
          record[i] = rs.getString(i + 1);
        }
        cache.addElement(record);
      }
      fireTableChanged(null);         
      rs.close();
      if (con.getAutoCommit() != false) {
        con.close();
      }         
    } catch (Exception e) {
      cache = new Vector();
      e.printStackTrace();
    }
  }
4

1 に答える 1