多重更新仅适用于 jdbc 中的查询之一

Multiple update only works on one of the query in jdbc

我的应用程序中有一个部分需要同时更新两个 table(WORKTR 和 BRTR)。

但是,该程序仅适用于第一个 table 更新查询,而第二个查询无效,因此仅更新了 table。 Log错误处没有错误提示。

这是我的 jdbc 代码,用于更新 table:

                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();
                                }

请突出显示是否有任何错误或建议另一种可以更新两者的方法 table。

改为

int rowsChanged = ps.executeUpdate();

if (rowsChanged  >= 1) {

您给 executeUpdate 打了两次电话。

  • 不应重新执行 PreparedStatement
  • 状态已更改,因此即使您可以重新使用 PreparedStatement ,更新也可能会失败