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 ページを作成しました。すべての機能が正常に動作しています。ユーザーがキャンセル ボタンをクリックした場合のセーブポイントへのロールバックを除きます。ユーザーがキャンセル ボタンをクリックしても、ロールバック オプションは機能しません。何かアドバイス?

4

1 に答える 1

0

あなたがしていることはまったくお勧めできません。そして、あなたがやっているようにJavascriptイベントからJavaコードを呼び出すことはできません。

  1. JSP 内で UI コードとロジック コードを混在させています。MVC パターンを使用して、UI とビジネス ロジックを分離してみてください。
  2. データベースに保存する前に Javascript から確認を求めます。保存せず、確認を求めてからロールバックします。
于 2013-03-28T07:26:50.300 に答える