jdbc(补充)

 

一、事务概念和特性

1、事务概念:是指一组原子操作(一组sql语句执行)的工作单元

2、这个工作单元中的所有原子操作在进行期间,与其他事务隔离,免于因数据来源的交相更新发生混乱,事务中所有原子操作要么全部执行,要么全部失败。

3、设置事务的提交方式为非自动提交

Conn.setAutoCommit(false);

4、事务和ACID属性

A原子性 是一个整体,要么都成功。要么都失败。

C 一致性  事务执行之前状态是正确。 成功执行 第二个正确状态。如果执行失败。就回到之前状态。

I  隔离性 每个事务在它自己的空间发生,和其他发生在系统中的事务隔离。而且事务结果只有在它完成后才能看到。  通过加锁机制来实现

D 持久性  修改成功就会长久保留下来。

二、事务处理

1、set @@autocommit=0;  sql语句

2、start transaction;  设置事务的开始点

3、执行事务。commit;是提交事务。表示正确执行。永久保存。

4、rollback; 回滚事务,撤销操作。回到原来状态。

5、设置保存点 savepoint 保存点名;

rollback  work to savepoint s1; 回滚到保存点。提示:没有提交。还需要commit将以前的提交。

三、在Java中实现事务的操作。

Conn。SetAutoCommit(false); 修改提交方式,不自动提交

在try catch中  在try最后一句 表示没有异常。执行commit

有异常。 将rollback回滚事务放在catch块中。

代码: Connection con=null;

      PreparedStatement  pst=null;

SavePointsp=null;

Try{

           Con=JdbcUtil.getConnection();

           Con.setAutoCommit(false);

           String sql=”delete fromstudent where id=1”;

           Pst=con.preparedStatement(str);

           System.out.println(“第一条sql语句”);

           Pst.excuteUpdate();

         //设置保存点

           SavePointsp=con.setSavepoint();44eeeeeeeee

System.out.println(“第二条”);

           Sql=”update student setname =’try’ where id=’asd’”

           Pst=con.prepareStatement(sql);

Pst.executeUpdate();

Con.commit();//提交事务

System.out.println(“事务完成“);

}catch(SQLException e){

 

Try{

//con.rollback();

Con.rollback(sp);  返回到保存点

}catch(SQLException e1){

 

}

}finally{

       Con.setAutoCommit(true);将提交方式设置回来

       //释放资源

      

}

四、隔离级别

      会出现脏读,不可重复读,幻读的情况

      隔离级别为:

读未提交  ReadUncommitted   出现三个情况

读已提交   ReadCommitted     出现  不可重复读  幻读

可重复读   RepeatableRead    默认级别。  会出现幻读情况

可序列化   Serializable       什么都不会出现 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值