2010-11-20 59 views
0

我正在使用NetBeans IDE。我喜歡檢查canni是如何從使用netbeans綁定映射到表的jtable中進行搜索的。我想刷新顯示符合我的搜索條件的jtable記錄如何在jtable中顯示搜索結果?

回答

0
DefaultTableModel model = new DefaultTableModel(results from your search); 
table.setModel(model); 

編輯:請參閱Table From Database

+0

您好我真的不明白我怎麼把在結果到JTable的? – Ggf 2010-11-21 01:18:31

+0

@Ggf,請參閱編輯。 – camickr 2010-11-21 19:43:13

0

首先我得到Jcombo框中的字段名稱。

private void Text1KeyReleased(java.awt.event.KeyEvent evt) {         

     JTetclear(); 
     Connection con = null; 
     Statement stmt = null; 

try { 

     con = javaconnect.MySqlServer(); 
     stmt = con.createStatement(); 
     ResultSet rs = stmt.executeQuery("SELECT * FROM `" + Combo1.getSelectedItem() + "` where `" + Combo2.getItemAt(0).toString() + "` Like '%" + Text1.getText() + "%' or `" + Combo2.getItemAt(1).toString() + "` Like '%" + Text1.getText() + "%' or `" + Combo2.getItemAt(2).toString() + "` Like '%" + Text1.getText() + "%' or `" + Combo2.getItemAt(0).toString() + "` Like '%" + Text1.getText() + "%' order by PARTNO;"); 
     ResultSetMetaData md = rs.getMetaData(); 
     DefaultTableModel tm = (DefaultTableModel) Table1.getModel(); // for changing column and row model 
     Combo2.removeAllItems(); 
     tm.setColumnCount(0); tm.setRowCount(0); // clear existing columns and clear existing rows  
      for (int i = 1; i <= md.getColumnCount(); i++) { 
       tm.addColumn(md.getColumnName(i)); 
       Combo2.addItem(md.getColumnName(i));//l load the column name in the combobox 
    } 
     tm.setRowCount(0); // clear existing rows  
      while (rs.next()) {  // Get row data 
       Vector row = new Vector(md.getColumnCount()); 
       for (int i = 1; i <= md.getColumnCount(); i++) { 
        row.addElement(rs.getObject(i)); 
    } 
     tm.addRow(row); 
     Table1.getColumnModel().getColumn(0).setPreferredWidth(160); 
     Table1.getColumnModel().getColumn(1).setPreferredWidth(380); 
    } 
     rs.close(); 
     stmt.close(); 
    } catch (Exception ex) { 
     JOptionPane.showMessageDialog(this, ex, ex.getMessage(), WIDTH, null); 
    } 
    } 
0

這就是我做到的。不是專家。

返回結果集方法,包括:在TableDAO

public ResultSet actualInventoryInCencos(int idCencos) throws SQLException { 

    try { 
     SQL sql = new SQL(); 
     PreparedStatement selectPS = sql.createPStatement(cf.SELECT_INVENTORY_BY_CENCOS); 
     selectPS.setInt(1, idCencos); 
     ResultSet resultSet = selectPS.executeQuery(); 
     return resultSet; 
    } catch (SQLException | NullPointerException e) { 
     System.out.println(cf.ERROR_SQL + e); 
     cf.e(1); 
     return null; 
    } 

} 

方法接受結果集,並返回與所有的查詢數據一個DefaultTableModel。

public DefaultTableModel createTable(ResultSet rs) throws SQLException { 

    ResultSetMetaData metaData = rs.getMetaData(); 
    int columnCount = metaData.getColumnCount(); 

    //ColumnsNames 
    Vector<String> columnsNames = new Vector<>(); 
    columnsNames.add("Column1"); 
    columnsNames.add("Column2"); 
    columnsNames.add("Column3"); 

    Vector<Vector<Object>> tableData = new Vector<>(); 

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

    return new DefaultTableModel(tableData, columnsNames); 
} 

而到了新模式設爲線條您JTable

yourJTable.setModel(tableDAO.createTable(inventory.actualInventoryInCencos(userData.getUserId())));