2010-11-20 5 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

+0

@Ggf、編集を参照してください。 – camickr

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

これは私のやり方です。専門家ではありません。結果セットを返す

方法:結果セットを受け入れ、作成し、すべてのクエリデータでDefaultTableModelを返し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; 
    } 

} 

方法。

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()))); 
関連する問題