如teddy_huang(生活多美好,睡觉) 所说,其实不是JSP的问题,是JDBC的问题。
一般默认是自动提交的,也就是说你一运行提交或查询等操作就自动向数据库提交,事务处理就时尼做一大堆尤其是相关联的操作后再一起提交,要么全部成功,要么全部失败,不会造成数据的不一致;所以首先要设为不是自动提交的:
conn.setAutoCommit(false);
然后进行你的更新操作。
然后提交
conn.commit();
如果失败:
conn.rollback();
conn.setAutoCommit(true);
不论怎样最后都要恢复默认状态:
conn.setAutoCommit(true);

解决方案 »

  1.   

    请给出一个例子,我用下面的语句时总是提示要进行异常处理,一般应如何写?
        try{
          conn=DriverManager.getConnection(sConnStr);
          conn.setAutoCommit(false);
          stmt=conn.createStatement();
          for(int i=0;i<sql.length;i++){
            stmt.executeUpdate(sql[i]);
          }
          conn.commit();
        }
        catch(SQLException e){
          System.err.println("executeUpdate error:"+e.getMessage());
          conn.rollback();
        }
      

  2.   

    建议你使用addbatch,去看看jdbc的相关文档就好了
      

  3.   

    你用的是什么数据库?mysql默认时不支持事务
      

  4.   

    Statement stat = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
    createStatement方法里有两个参数要设置,如果设置不正确,可能会不允许你写数据库或者用游标。
    如果这方面没问题了,还是不能用事务的话就是你的数据库的事了,可能要升级或者配置,我记得Sybase要运行一个升级SQL文件.
      

  5.   

    try{
          conn=DriverManager.getConnection(sConnStr);
          conn.setAutoCommit(false);
          stmt=conn.createStatement();
          for(int i=0;i<sql.length;i++){
            stmt.executeUpdate(sql[i]);
          }
          conn.commit();
        }
        catch(SQLException e){
          System.err.println("executeUpdate error:"+e.getMessage());
          conn.rollback();
    conn.setAutoCommit(true);
        }finally{
     conn.setAutoCommit(true);
    }