欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【汇智学堂】JAVAWEB学习日志

程序员文章站 2022-06-29 20:04:00
...

今日收获(1):Java事务的处理
定义:如果对数据库进行多次操作,每一次的执行或步骤都是一个事务
JavaBean中使用JDBC方式进行事务处理。

 public int add(PrimaryMarks p) throws SQLException {
        match m = null;
         int num=0;
         int numa=0;
        int intmarks=intsum();
         try {
        conn.setAutoCommit(false);
        executeUpdate("INSERT into tb_marks(fullname,grade,marks,lastmarks,nextmarks,appraise)values(?,?,?,?,?,?)");
        executeUpdate("INSERT into tb_primarymarks(fullname,grade,chinese,english,science)values(?,?,?,?,?,?)");
        num= (int) executeUpdate(p.getFullname(),p.getGrade(),p.getChinese(),p.getMaths(),p.getEnglish(),p.getScience());
        numa=(int) executeUpdate(m.getFullname(),m.getGrade(),m.getMarks(),m.getLastmarks(),m.getNextmarks(),m.getAppraise());
        conn.commit();
        conn.setAutoCommit(true);
        closeAll();
        return 1;}
        catch (Exception e){
            conn.rollback();
            e.printStackTrace();
            closeAll();
            return -1;
        }

上述代码中,两条语句必须全部处理正确,否则会回滚。

注意事项
在Java中使用事务处理,首先要求数据库支持事务。如使用MySQL的事务功能,就要求MySQL的表类型为Innodb才支持事务。否则,在Java程序中做了commit或rollback,但在数据库中根本不能生效。
查看MySQL数据库使用事务,相关数据表必须为InnoDB引擎
查看数据表状态:
SHOW TABLE STATUS FROM test WHERE NAME=‘register’
其中test为数据库,register为表名
修改数据表类型为InnoDB。