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

问题描述 投票:0回答:1

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

但是,该程序仅对第一个表更新查询有效,而第二个查询不起作用,仅更新了一个表。记录错误时没有错误提示。

这是我的jdbc代码,用于更新两个表:

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

请突出显示是否有任何错误,或提出另一种更新两个表的方法。

java sql-server jdbc sql-update prepared-statement
1个回答
0
投票

更改为

int rowsChanged = ps.executeUpdate();

if (rowsChanged  >= 1) {

您两次打电话给executeUpdate

  • 不应重新执行PreparedStatement
  • 状态已更改,因此即使您可以重新使用PreparedStatement,更新也可能会失败
© www.soinside.com 2019 - 2024. All rights reserved.