2010-11-20 60 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())));