为DefaultTableModel创建矢量

时间:2014-03-06 23:48:26

标签: java arrays swing vector defaulttablemodel

public static DefaultTableModel localQuery(String searchTerm){

    List<String[]> result = new ArrayList<String[]>();
    String[] rowResult = new String[7];
    Vector<String[]> rows = new Vector<String[]>();
    Vector<String> columnNames = new Vector<String>();
    Statement stmt = null;      
    try {
      stmt = conn.createStatement();
      ResultSet rs = stmt.executeQuery(searchTerm);
      while(rs.next()){
          rowResult = new String[13];

          String currentId= rs.getString("CurrentId");
          String manufacturer = rs.getString("Constructor");
          String type = rs.getString("ACType");
          String series = rs.getString("Series");
          String index = rs.getString("KeyNo");
          String operator = rs.getString("Operator");
          String baseCountry = rs.getString("Home_Country");
          String baseAirport = rs.getString("Home_Airfield");
          String cn = rs.getString("Con");
          String lineNo = rs.getString("LineNum");
          String hex = rs.getString("Hexcode");
          String selcal=rs.getString("Selcal");
          String acName = rs.getString("ACName");

          rowResult[0] = (currentId);
          rowResult[1] = (manufacturer);
          rowResult[2] = (type);
          rowResult[3] = (series);
          rowResult[4] = (operator);
          rowResult[5] = (baseCountry);
          rowResult[6] = (baseAirport);
          rowResult[7] = (cn);
          rowResult[8] = (lineNo);
          rowResult[9] = (hex);
          rowResult[10] = (selcal);
          rowResult[11] = (acName);
          rowResult[12]= (index);
          result.add(rowResult);

      }

    columnNames.add("Reg.");
    columnNames.add("Manufacturer");
    columnNames.add("Type");
    columnNames.add("Series");
    columnNames.add("Operator");
    columnNames.add("Home Country");
    columnNames.add("Home Airfield");
    columnNames.add("C/N");
    columnNames.add("Line #");
    columnNames.add("Hex");
    columnNames.add("Selcal");
    columnNames.add("Aircraft Name");
    columnNames.add("");





      rs.close();
      stmt.close();


    //Convert from List<String[]> to a suitable vector for  resultTable... Help!!!


  DefaultTableModel resultTable = new DefaultTableModel(rows, columnNames);
  return resultTable;

    }

嗨!我正在尝试使用此方法返回要在JTable上使用的DefaultTableModel。我正在努力将从数据库中提取的数据格式化为模型友好格式。对我来说很容易,这是我有史以来第三次编程!

提前致谢:)

1 个答案:

答案 0 :(得分:1)

  1. 您可以使用ResultSetMetaData←API链接

    动态获取列标题
    ResultSetMetaData rsMeta = resultSet.getMetaData();
    int numberOfCols = rsMeta.getColumnCount();
    Vector<String> columnNames = new Vector<>();   // your columns names
    for (int i = 1; i <= numberOfCols; i++ ){
        columnsNames.add(rsMeta.getColumnName(i));
    }
    
  2. 您不需要额外的VectorList来获取数据。首先使用构造函数参数DefaultTableModel声明( Vector/Object[] colNames, int rows)。然后,只需使用addRow

    中的DefaultTableModel方法即可
    DefaultTableModel model = new DefaultTableModel(columnNames, 0);
    
    while (resultSet.next()) {
        String data1 = resultSet.getString(1);
        String data2 = resultSet.getString(2);
        ...
        Object[] rowData = new Object[] { data1, data2, ... };
        model.addRow(rowData);
    }
    
    return model;
    
  3. 或者,为了确保获得正确数量的列,而不是2.,可以使用while循环内的Vector并循环遍历列数据。

    DefaultTableModel model = new DefaultTableModel(columnNames, 0);
    
    while (resultSet.next()) {
        Vector<String> row = new Vector<>();
        for (int i = 1; i <= numberOfCols; i++) {
            row.add(resultSet.getString(i));
        }
        model.addRow(row);
    }
    
    return model;
    
  4. 查看更多方法和构造函数,请参阅DefaultTableModel API