2014-03-06 2 views
1
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 반환하려면 노력하고있어. 필자는 데이터베이스에서 가져온 데이터를 모델 친숙한 형식으로 포맷하는 데 어려움을 겪고 있습니다. 나에게 쉽게 받아 들여라, 이것은 모든 종류의 프로그래밍에 관한 나의 제 3의 날이다! 사전 :DefaultTableModel 용 벡터 만들기

답변

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. 당신은 여분의 Vector 또는 데이터의 List 필요하지 않습니다 . 먼저 생성자 인수 (Vector/Object[] colNames, int rows)을 사용하여 DefaultTableModel을 선언하십시오. 그런 다음 당신은을 통해 while 루프와 루프 내부의 벡터를 사용할 수 있습니다, 당신이 올바른 열의 수를 점점하고 있는지 확인하는 대신 2의, 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. 에서 방법 addRow을 사용하거나 열 데이터

    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; 
    

더 많은 방법을 참조 생성자가 @peeskillet에 대한 DefaultTableModel API

+0

감사보고, 내가 오류를받지 못했습니다 의미에서 일하게 될 것으로 보인다. 내 다음 질문은 다음과 같습니다. 내 Jtable이 정의 된 클래스에서 빈 DefaultTableModel (단순화를 위해 tableModel)을 할당 한 다음이 메서드를 실행하고 tableModel = returnModelFromThisMethod를 수행합니다. 내 이해 이제 테이블을 새로 고치고 내 메서드 결과를 바로 표시해야합니다? 내 무지를 용서하지만 내가가는 동안 나는 배우고있다. 그걸로 충분합니까, 아니면 어떤 종류의 테이블 리스너가 필요합니까? –

+0

다른 테이블 모델을 선언해야합니다. 'DefaultTableModel model2 = localQuery (...);'그런 다음 테이블의 모델을 설정하십시오 ..'table.setModel (model2);' –

+1

IT WORKS !!!! 살아있어!!! 하하 당신은 놀랍습니다 @peeskillet. 이것은 나 같은 무지한 초보자를위한 놀라운 사이트입니다. 정말 고맙습니다! –