【问题标题】:Java Code for the next button下一个按钮的 Java 代码
【发布时间】:2013-04-03 06:44:50
【问题描述】:

您好,这是我的下一个按钮的 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
        }
    }
}

【问题讨论】:

  • 为了获得帮助,请尽快发布SSCCE,简短,可运行,可编译,
  • 为什么原因在PreparedStatement declared ResultSet.CONCUR_UPDATABLE`

标签: java swing jdbc


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    您需要在next() 方法之外获取resultset。每次调用next() 都会重置resultset,然后cursor 会重新开始。

    【讨论】:

      【解决方案3】:

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

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

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

      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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          像下面这样向前移动一条记录

          rs.next()
          

          像下面这样浏览所有“下一个”记录

          while(rs.next())
          

          像下面这样向后移动

          rs.previous()
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-02-09
            • 2023-03-25
            相关资源
            最近更新 更多