Многократное обновление работает только для одного запроса в jdbc - PullRequest
0 голосов
/ 13 февраля 2020

В моем приложении есть раздел, который требует одновременного обновления двух таблиц (WORKTR и BRTR).

Однако программа работает только с первым запросом на обновление таблицы, в то время как второй запрос не выполняется. работа, в результате чего только таблица была обновлена. В сообщении об ошибке нет сообщения об ошибке.

Вот мой код jdb c для обновления обеих таблиц:

                String query=("UPDATE WORKTR SET status = ? WHERE Pf_no = ? AND status = ? AND Scan_by= ? AND Start_date= ?");
                            PreparedStatement ps = con.prepareStatement(query);
                            // set the preparedstatement parameters
                            ps.setString(1,a_status);
                            ps.setString(2,OperatorPF);
                            ps.setString(3,b_status);
                            ps.setString(4,PIC);
                            ps.setString(5,dates);

                            // call executeUpdate to execute our sql update statement
                            ps.executeUpdate();

                            if (ps.executeUpdate()==1) {

                                String queryBRTR= ("Update BRTR set end_break = ?, status= ? where  and PF_No= ? and work_date= ?");
                                PreparedStatement br = con.prepareStatement(queryBRTR);
                                // set the preparedstatement parameters
                                br.setString(1,currentTime);
                                br.setString(2,a_status);
//                                br.setString(3,b_status);
                                br.setString(3,OperatorPF);
                                br.setString(4,dates);
                                // call executeUpdate to execute our sql update statement

                                br.executeUpdate();


                                if( br.executeUpdate()==1){

                                    z="You may resume your work now";
                                }
                                else{
                                    ps.close();
                                    br.close();
                                }

Пожалуйста, выделите, если есть какая-либо ошибка, или предложите другой способ, который будет работать, чтобы обновить обе таблицы.

1 Ответ

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

Изменить на

int rowsChanged = ps.executeUpdate();

if (rowsChanged  >= 1) {

Вы звонили executeUpdate дважды.

  • Не следует повторно выполнить PreparedStatement
  • Статус изменился, поэтому даже если Вы можете повторно использовать PreparedStatement, обновление, вероятно, завершится ошибкой
...