【发布时间】:2010-11-20 10:08:26
【问题描述】:
我正在使用 netbeans IDE。我喜欢检查 canni 是如何从使用 netbeans 绑定映射到表的 jtable 中实际搜索的。我想刷新 jtable 以显示与我的搜索条件匹配的记录
【问题讨论】:
我正在使用 netbeans IDE。我喜欢检查 canni 是如何从使用 netbeans 绑定映射到表的 jtable 中实际搜索的。我想刷新 jtable 以显示与我的搜索条件匹配的记录
【问题讨论】:
DefaultTableModel model = new DefaultTableModel( results from your search );
table.setModel( model );
编辑:见Table From Database。
【讨论】:
首先我在 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);
}
}
【讨论】:
我就是这样做的。不是专家。
返回结果集的方法:
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;
}
}
TableDAO 中接受结果集并生成并返回包含所有查询数据的 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())));
【讨论】: