Обновлять строки в другой таблице на основе выбранного вывода из другой таблицы, но программа обновляет только верхнюю строку - PullRequest
0 голосов
/ 17 февраля 2020

Я хочу обновить несколько строк из таблицы «WORKTR» на основе выбранных строк из таблицы «BRTR». К сожалению, программа обновляет только таблицу WORKTR, основываясь на первой строке таблицы «BRTR».

Вот мой код:

      Button Back = (Button) findViewById(R.id.btn_back);
        Back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                connectionClass = new ConnectionClass();
                Connection con = connectionClass.CONN();
                try {
                    final String PIC = lblname.getText().toString();
                    String dates = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH).format(Calendar.getInstance().getTime());
                    String check = "Select * from BRTR where work_date='" + dates + "' and end_break is null";
                    Statement st = con.createStatement();

                    rs = st.executeQuery(check);


                    while (rs.next()) {
                        String PF_NO = rs.getString("PF_No");



                        String query2 = "Update WORKTR set status ='" + b_status + "' where Start_date='" + dates + "' and Pf_no='" + PF_NO + "' and Scan_by='" + PIC + "' and status='" + a_status + "'";

                        st.executeUpdate(query2);
                    }
                } catch (Exception ex)
                {

                }
                onBackPressed();
            }

        });

Пожалуйста, помогите или сообщите, если вы видите какие-либо ошибки из кодов выше.

1 Ответ

0 голосов
/ 17 февраля 2020

Попробуйте использовать другой оператор, поскольку st.executeUpdate(query2); закроет ResultSet, и вы получите JdbcSQLException, однако вы игнорируете все исключения в своем коде. Вы должны по крайней мере поместить ex.printStackTrace() в свой блок catch, чтобы вы могли видеть, что происходит.

Несмотря на то, что в коде многое можно улучшить, функционально это должно работать для вас,

      Button Back = (Button) findViewById(R.id.btn_back);
    Back.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            connectionClass = new ConnectionClass();
            Connection con = connectionClass.CONN();
            try {
                final String PIC = lblname.getText().toString();
                String dates = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH).format(Calendar.getInstance().getTime());
                String check = "Select * from BRTR where work_date='" + dates + "' and end_break is null";
                Statement st = con.createStatement();

                rs = st.executeQuery(check);


                while (rs.next()) {
                    String PF_NO = rs.getString("PF_No");



                    String query2 = "Update WORKTR set status ='" + b_status + "' where Start_date='" + dates + "' and Pf_no='" + PF_NO + "' and Scan_by='" + PIC + "' and status='" + a_status + "'";

                    con.createStatement().executeUpdate(query2);
                }
            } catch (Exception ex)
            {
               ex.printStackTrace(); // now we can see what is going wrong
            }
            onBackPressed();
        }

    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...