JSP中数据库操作事务处理

JDBC支持事务操作,一般情况下,事务的操作需要以下步骤:

(1)把数据库连接对象的自动提交SQL的操作的属性关闭。(默认关闭事务-即打开自动提交。因为DDL和DCL的语句都会导致使我立即提交,而事务是由一步或几步数据操作序列组成的逻辑单元,这系列操作要么全部执行,或全部放弃执行。所以要将自动提交属性关闭)

(2) 执行一系列数据库操作,如果成功就提交事务。(调用Connection的commit方法提交)

(3)如果事务中操作没有完全成功,就回滚事务(当Connection遇到一个未处理的SQLException异常时,系统将会非正常的退出,事务也会自动的回滚。但如果程序捕获到了异常,则需要在异常处理块中显示的回滚事务)

代码举例:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*"%>


  
   JSP中数据库操作事务处理
  

  
     
     <%
       Connection conn=null;
       Statement stat=null;
       ResultSet rs=null;
       Class.forName("com.mysql.jdbc.Driver").newInstance();
       String url="jdbc:mysql://localhost:3306/spj?user=root&password=19960722w";
       conn = DriverManager.getConnection(url);
       conn.setAutoCommit(false);
      try
      {
         stat=conn.createStatement();
         String sql="insert into j (Jno,Jname,City) values('6','牧场','西安')";
         stat.execute(sql);
         
         String sql1="update j set Jno='7' where Jname='牧场'";
         stat.execute(sql1);
         
         conn.commit();
         conn.setAutoCommit(true);
         out.println("事务执行成功,执行回滚操作");
       }
       catch(Exception e)
       {
          conn.rollback();
          out.println("执行失败,执行回滚操作");
          System.out.print(e.getMessage());
       }
       if(stat!=null)
       {
          stat.close();
        }
        if(conn!=null)
        {
            conn.close();
         }
    %>
  
  

你可能感兴趣的:(Java,Web)