【发布时间】:2020-10-18 09:43:55
【问题描述】:
.next() 在此代码中不起作用。我尝试了很多但徒劳无功。例如,如果我在 branch_issuance_g_item_vise(数据库表名)中有 10 行。此代码仅打印第一行 10 次。
void stockIssuance(String date) throws SQLException{
report_table.setVisible(true);
Statement s = db.conn().createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM branch_issuance_g_item_vise");
DefaultTableModel dt = (DefaultTableModel) report_table.getModel();
dt.setRowCount(0);
Vector v = new Vector();
if(!rs.next()){
m.printError("No Data Found");
rs.beforeFirst();
}
else{
while(rs.next()){
v.add(rs.getString("item_name"));
v.add(rs.getString("qty"));
dt.addRow(v);
}
}
}
即使,这也行不通。
void stockIssuance(String date) throws SQLException{
report_table.setVisible(true);
Statement s = db.conn().createStatement();
ResultSet rs = s.executeQuery("SELECT * FROM branch_issuance_g_item_vise");
DefaultTableModel dt = (DefaultTableModel) report_table.getModel();
dt.setRowCount(0);
Vector v = new Vector();
while(rs.next()){
v.add(rs.getString("item_name"));
v.add(rs.getString("qty"));
dt.addRow(v);
}
}
【问题讨论】:
-
尝试删除
if(!rs.next())。只需保留 while 循环即可。 -
我试过了,结果一样。
-
if的逻辑会导致它跳过一行。你继续使用相同的向量。所以你实际上是在更新它以前的所有实例。你必须在每次迭代中使用一个新的向量。 -
第二个代码块是您应该使用的,但您需要将
Vector v = new Vector();语句移入while循环,因此每次调用addRow()都会添加不同的矢量对象。与上面duplicate link 中的描述相同。 -
@RealSkeptic 非常感谢兄弟。你能解释一下,为什么每次迭代都需要创建一个新的向量对象吗?
标签: java database netbeans resultset