.next()在Java的ResultSet中不起作用



.next((在此代码中不起作用。我试了很多,但都白费了。例如,如果我在branch_issuance_g_item_vise(DB表名(中有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);
}
}

您应该在while循环的开始处停止一个新的向量v。按原样,行将附加到向量,但只有两列。

此外,每次调用rs.next时,结果集都会前进一步。如果结果集为空,最简单的解决方法是删除检查。

while之前添加rs.beforeFirst,并在循环内移动VectorArrayList创建

else {
rs.beforeFirst();
while(rs.next()) {
ArrayList v = new ArrayList();

将光标移动到此ResultSet对象的前面,就在第一行之前。如果结果集不包含行,则此方法无效。

您应该使用ArrayList而不是Vector

首先,您应该在else条件之前调用res.beforeFirst(),因为每次if语句检查条件时,您都在执行rs.next(),而当您执行else条件时,通过再次执行rs.next()来跳过第一个元素。

为了解决你的问题,我建议你这样做,而不使用向量:

ResultSet res=stat.executeQuery(query);
while (res.next()){
model.setRowCount(model.getRowCount() + 1);
int currentRow = model.getRowCount() - 1;
model.setValueAt(res.getString("param1"), currentRow, 0);
model.setValueAt(res.getString("param2"), currentRow, 1);
model.setValueAt(res.getString("param3"), currentRow, 2);
model.setValueAt(res.getString("param4"), currentRow, 3);

}

在这个例子中,我使用了一个行计数器,我有4个字段,比如"0";姓名|姓氏|日期|身份证|"这就是为什么你看到0,1,2,3。如果您的表中只有一列,请使用

model.setValueAt(res.getString("something"), currentRow, 0);

如果你一直想使用你的向量,你需要在while循环中每次初始化它:

Vector v;
while(rs.next()){
v=new Vector();
.....
}

相关内容

  • 没有找到相关文章

最新更新