2013-03-28 84 views
0
<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> 

我写了一个JSP页面来确认预订蔬菜。所有功能都正常工作。如果用户单击取消按钮,则回滚到保存点。 即使用户单击取消按钮,回滚选项也不起作用。有什么建议?数据库查询回滚到保存点失败

+0

使用MySQL已经够糟糕了,但是在未完成的事务中等待UI呢? ... – 2013-03-28 07:32:00

回答

0

你在做什么根本不建议。你不能像你所做的那样从Javascript事件中调用Java代码。

  1. 您在JSP中混用了UI代码和逻辑代码。尝试使用MVC模式和单独的用户界面和业务逻辑。
  2. 在保存到数据库之前,先向Javascript询问确认。不保存并要求确认,然后回滚。
+0

但它的工作正常,除了回滚部分 – 2013-03-28 15:18:41

相关问题