0

你好朋友我正在尝试在我的 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`
4

2 回答 2

2

在您的while循环中,您的JTextFields值正在设置和重新设置,并保持设置为循环中的最后一个值。为每个按钮单击单独调用会产生昂贵的开销,但是如果您希望使用这种方法,则需要在您的中添加一个仅返回一条记录的适当WHERE子句。SQL还可以考虑使用连接池

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

如何使用表格

于 2013-01-18T16:01:49.373 回答
1

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

以下是您的应用程序在启动时需要做的事情:

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

左键单击下一个按钮时:

  • 从列表中获取下一个键。
  • 如果您超出列表末尾,则显示一条消息。
  • 否则,选择当前行并显示它。

左键单击上一个按钮时:

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

以下是您的应用程序在结束时需要做的事情:

  • 关闭与数据库的连接。
于 2013-01-18T16:56:28.607 回答