Java 数据库查询回滚到保存点失败 函数disp_confirm() { var r=确认(“确认预订?”) 如果(r==true) { 警报(“预订”) } else() { 警报(“您按了取消!”) } }

Java 数据库查询回滚到保存点失败 函数disp_confirm() { var r=确认(“确认预订?”) 如果(r==true) { 警报(“预订”) } else() { 警报(“您按了取消!”) } },java,mysql,jsp,jdbc,prepared-statement,Java,Mysql,Jsp,Jdbc,Prepared Statement,我已经编写了一个JSP页面来确认蔬菜的预订。所有功能都正常工作。除非用户单击“取消”按钮时回滚到保存点。 即使用户单击“取消”按钮,回滚选项也不起作用。有什么建议吗?根本不建议你做什么。您不能像现在这样从Javascript事件调用Java代码 您正在JSP内部混合UI代码和逻辑代码。尝试使用MVC模式和独立的UI和业务逻辑 在保存到数据库之前,请求Javascript确认。不保存并请求确认,然后回滚 使用MySQL已经够糟糕的了,但是在UI上等待一个未完成的事务。。。 <body>

我已经编写了一个JSP页面来确认蔬菜的预订。所有功能都正常工作。除非用户单击“取消”按钮时回滚到保存点。
即使用户单击“取消”按钮,回滚选项也不起作用。有什么建议吗?

根本不建议你做什么。您不能像现在这样从Javascript事件调用Java代码

  • 您正在JSP内部混合UI代码和逻辑代码。尝试使用MVC模式和独立的UI和业务逻辑
  • 在保存到数据库之前,请求Javascript确认。不保存并请求确认,然后回滚

  • 使用MySQL已经够糟糕的了,但是在UI上等待一个未完成的事务。。。
    <body>
    <%String ide=request.getParameter("q");
    int num=0;
    if(ide!=null)
     num=Integer.parseInt(ide);
    String vegg=request.getParameter("vegetables");
    int newe=0; 
    Connection cnt1=null;
    try{
    String connectionURL = "jdbc:mysql://localhost:3306/emandi";
    Class.forName("com.mysql.jdbc.Driver");  
     cnt1 = DriverManager.getConnection(connectionURL, "root", "root");
     cnt1.setAutoCommit(false);
     cnt1.commit();
    Statement stmt1 = cnt1.createStatement();
    Savepoint mySavepoint = cnt1.setSavepoint("sp1");
    ResultSet resultSet = stmt1.executeQuery("select Quantity from data where vegetables='"+vegg+"' ");
    
    if(resultSet.next())
    {
        newe=resultSet.getInt(1);
    }
    
    int newvalue=newe-num;
    //PreparedStatement statem1=cnt1.prepareStatement("update data set Quantity="+newvalue+" where vegetabels='"+vegg+"' ");
    //statem1.execute();
    stmt1.executeUpdate("update data set Quantity="+newvalue+" where vegetables='"+vegg+"' ");
    out.println(newvalue);
    }
    catch(Exception e){
    out.println(e);
        }%>
    <script>
     function disp_confirm()
    {
    var r=confirm("confirm booking?")
    if (r==true)
    {
        <%cnt1.commit();%>
     alert("booked")
      }
      else()
     {
    <%cnt1.rollback(sp1);%>
      alert("You pressed Cancel!")
     }
     }
    </script>
    <input type="button" onclick="disp_confirm()" value="book">
    
    </body>
    </html>