1

嗨,这是我的下一个按钮的 Java 代码。

但它只进入一条记录,即在最后一条记录之后它只移动到第一条记录。

如何在整个数据库条目中移动它。

请给我一些建议。

public void Next() {
    Connection con = null;
    ResultSet rs = null;
    try {
        con = DBConnection();
        PreparedStatement pstmt = con.prepareStatement("select * from data", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
        rs = pstmt.executeQuery();
        if (rs.next()) {
            field1.setText(rs.getString("Name"));
            field2.setText(String.valueOf(rs.getInt("Age")));
        } else {
            rs.previous();
            JOptionPane.showMessageDialog(nxtbtn, "end of file");
        }
    } catch (Exception e) {
        // TODO: handle exception
    } finally {
        try {
            rs.close();
        } catch (SQLException err) {
            JOptionPane.showMessageDialog(nxtbtn, err.getMessage());
            // TODO: handle exception
        }
    }
}
4

5 回答 5

1

当您调用 next 时,它会重新加载数据库中的所有结果并将光标移动到第一行之前,调用rs.next将移动到第一行。

您是否查询过一次,大概是在您需要显示下一条记录时。

在您的next方法中,只需调用rs.next()以将光标移动到结果集中的下一个可用行。

当然,您需要继续管理错误状态;)

于 2013-04-03T06:49:56.790 回答
0

rs.next() 将光标移动到下一个可用行。这就是它显示一条记录的原因。利用while(rs.next())

于 2013-04-03T07:00:27.983 回答
0

如果理解正确,您想使用下一步按钮单击结果集吗?

然后您应该阅读数据库并将其存储在下一个按钮方法之外的结果集中。

目前,您似乎每次点击都会创建一个新的结果集,并且只读取第一组数据。

private Connection con = DBConnection();
private ResultSet rs = null;
private Statement stmt = null;
public void onLoad()
{
stmt = con.createStatement();
rs = stmt.executeQuery("YOUR-CODE-HERE");
}

现在在下一个方法中,每次点击都通过 rs

于 2013-04-03T06:58:34.270 回答
0

您需要了解resultset该方法的外部next()next()每次调用都会重置resultset, 并cursor重新开始。

于 2013-04-03T06:53:02.657 回答
0

向前移动一条记录,如下所示

rs.next()

浏览所有“下一个”记录,如下所示

while(rs.next())

像下面这样向后移动

rs.previous()
于 2013-04-09T20:29:25.383 回答