如何在单击Java中的下一个按钮时显示下一个和上一个记录

时间:2013-01-18 16:00:08

标签: java sql

Hello Friends我试图在我的Jave Gui应用程序中显示记录我已经制作了一些代码但是当我点击下一个按钮时它会显示最后一条记录。有没有其他方法可以查看请帮助之间的记录。

 private void bt_nextActionPerformed(java.awt.event.ActionEvent evt) {
    if(evt.getSource()==bt_previous){
    DBUtil util = new DBUtil();
           try {
                Connection con = util.getConnection();
               PreparedStatement stmt = con.prepareStatement("SELECT [box_no],[weight],[note_state],[dm_state],[1],[2],[5],[10],[20],[50],[100],[500],[1000] FROM [CNV].[dbo].[soil_det] where rm_id=?");
                ResultSet rs;
                String rm = tf_rm_id.getText().trim();

                stmt.setLong(1, Long.parseLong(rm));

                rs = stmt.executeQuery();
                while (rs.next()) {
                    String a = rs.getString("weight");
                    txtboxwgt.setText(a);
                    String b = rs.getString("note_state");
                    cbnotstat.setSelectedItem(b);
                    String c = rs.getString("dm_state");
                    cbdmnstat.setSelectedItem(c);
                    txtboxno.setText(rs.getString("box_no"));
                    txtRe1.setText(rs.getString("1"));
                    txtRs2.setText(rs.getString("2"));
                    txtRs5.setText(rs.getString("5"));
                    txtRs10.setText(rs.getString("10"));
                    txtRs20.setText(rs.getString("20"));
                    txtRs50.setText(rs.getString("50"));
                    txtRs100.setText(rs.getString("100"));
                    txtRs500.setText(rs.getString("500"));
                    txtRs1000.setText(rs.getString("1000"));
                }

           } catch (Exception e) {
                     JOptionPane.showMessageDialog(null, e.getMessage());
                 }
    }


}`enter code here`

2 个答案:

答案 0 :(得分:2)

while循环中,您的JTextFields值正在设置&重新设置并保持设置在循环中的最后一个值。对每个按钮单击进行单独调用会产生昂贵的开销,但如果您希望使用此方法,则需要在WHERE中使用仅返回一条记录的SQL子句。另请考虑使用connection pooling

或者,您可以在JTable中显示所有值。

How to use Tables

答案 1 :(得分:1)

您需要将数据库代码与GUI代码分开。您还需要将应用程序分解为更小,更容易编码的步骤。

以下是您的应用程序在启动时需要执行的操作:

  • 打开与数据库的连接。
  • 选择表soil_det的所有键,并将键保存在列表中。
  • 选择第一行,然后显示。

左键单击下一个按钮时:

  • 从列表中获取下一个密钥。
  • 如果您已经过了列表的末尾,则显示一条消息。
  • 否则,选择当前行并显示它。

左键单击上一个按钮时:

  • 从列表中获取上一个密钥。
  • 如果您已经过了列表的开头,则显示一条消息。
  • 否则,选择当前行并显示它。

以下是您的应用程序在结束时需要执行的操作:

  • 关闭与数据库的连接。