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`
答案 0 :(得分:2)
在while
循环中,您的JTextFields
值正在设置&重新设置并保持设置在循环中的最后一个值。对每个按钮单击进行单独调用会产生昂贵的开销,但如果您希望使用此方法,则需要在WHERE
中使用仅返回一条记录的SQL
子句。另请考虑使用connection pooling。
或者,您可以在JTable
中显示所有值。
答案 1 :(得分:1)
您需要将数据库代码与GUI代码分开。您还需要将应用程序分解为更小,更容易编码的步骤。
以下是您的应用程序在启动时需要执行的操作:
左键单击下一个按钮时:
左键单击上一个按钮时:
以下是您的应用程序在结束时需要执行的操作: