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が設定および再設定され、ループの最後の値に設定されたままになります。ボタンのクリックごとに個別の呼び出しを行うとオーバーヘッドが高くなりますが、このアプローチを使用する場合は、1 つのレコードのみを返す適切なWHERE句が必要です。接続プーリングSQLの使用も検討してください。

または、すべての値を に表示することもできますJTable

テーブルの使い方

于 2013-01-18T16:01:49.373 に答える
1

データベース コードを GUI コードから分離する必要があります。また、アプリケーションをより小さく、コーディングしやすいステップに分割する必要があります。

開始時にアプリケーションが行う必要があることは次のとおりです。

  • データベースへの接続を開きます。
  • テーブル soil_det のすべてのキーを選択し、キーをリストに保存します。
  • 最初の行を選択して表示します。

次のボタンを左クリックした場合:

  • リストから次のキーを取得します。
  • リストの最後を過ぎた場合にメッセージを表示します。
  • それ以外の場合は、現在の行を選択して表示します。

前のボタンを左クリックした場合:

  • リストから前のキーを取得します。
  • リストの先頭を過ぎた場合にメッセージを表示します。
  • それ以外の場合は、現在の行を選択して表示します。

終了時にアプリケーションが行う必要があることは次のとおりです。

  • データベースへの接続を閉じます。
于 2013-01-18T16:56:28.607 に答える