JTable 缺少最后一列名称
JTable missing last column name
我已经创建了 jtable 但它没有显示最后一列名称我不知道我在代码数据库中做错了什么有 4 列 id,name,fathername 和 phone number 但 jtable 只显示3 列。
public void load() {
try {
DBO db = new DBO();
con = db.connect();
String sql = "Select * from personinfo";
PreparedStatement pst = con.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
DefaultTableModel tb = new DefaultTableModel();
Vector col = new Vector();
for (int i = 1; i < count; i++) {
col.addElement(rsmd.getColumnName(i));
}
tb.setColumnIdentifiers(col);
while (rs.next()) {
Vector rows = new Vector();
for (int j = 1; j < rsmd.getColumnCount(); j++) {
rows.addElement(rs.getString(j));
}
tb.addRow(rows);
PersonTable.setModel(tb);
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
我认为你应该使用
pst.setString(1, "%"+name.getText()+"%");
在创建准备好的语句时?用于替换绑定变量。您没有用作绑定变量的值不能按您想要的方式使用,在这种情况下使用 like。你很可能会通过这个 PreparedStatement IN clause alternatives?
你的问题很容易重复Using “like” wildcard in prepared statement
我已经创建了 jtable 但它没有显示最后一列名称我不知道我在代码数据库中做错了什么有 4 列 id,name,fathername 和 phone number 但 jtable 只显示3 列。
public void load() {
try {
DBO db = new DBO();
con = db.connect();
String sql = "Select * from personinfo";
PreparedStatement pst = con.prepareStatement(sql);
ResultSet rs = pst.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
DefaultTableModel tb = new DefaultTableModel();
Vector col = new Vector();
for (int i = 1; i < count; i++) {
col.addElement(rsmd.getColumnName(i));
}
tb.setColumnIdentifiers(col);
while (rs.next()) {
Vector rows = new Vector();
for (int j = 1; j < rsmd.getColumnCount(); j++) {
rows.addElement(rs.getString(j));
}
tb.addRow(rows);
PersonTable.setModel(tb);
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
我认为你应该使用
pst.setString(1, "%"+name.getText()+"%");
在创建准备好的语句时?用于替换绑定变量。您没有用作绑定变量的值不能按您想要的方式使用,在这种情况下使用 like。你很可能会通过这个 PreparedStatement IN clause alternatives?
你的问题很容易重复Using “like” wildcard in prepared statement