JDBC事务的应用

事务的特点

一,原子性
事务是一个完整的操作。
二,一致性
当事务完成是,数据必须处于一致状态
三,隔离性
对数据进行修改的所有并发事务是彼此隔离的
四、永久性
事务完成后,它对数据库的修改时永久保持

JDBC对事务管理的支持
一、commit()提交     rollback()回退
二、事务是自动提交的
调用setAutoCommit(false)禁止自动提交


示例

有一个表user
字段①name②age
通过一个delete方法(该方法通过姓名删除)


/**
     * 根据姓名删除学生信息
     * @param name
     */
    public void delect(String name){//jdbc
       Connection conn = null;
        try {
            conn = JDBC.getConnection();
            String sql = "delete from user where name = ?";
            PreparedStatement ptmt = conn.prepareStatement(sql);
            ptmt.setString(1,name);
            ptmt.execute();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    //执行该方法会删除第一个name1对应user
    public void delete(String name1,String name2 ){//Model
        User user = new User();
        user.delect(name1);
        String ob = null;
        ob.substring(1);
        user.delect(name2);
    }
public static void main(String[] args) throws SQLException {/Test

        UserAction ua = new UserAction();
        ua.delete("zhangsan","lisi");
    }


上面直接调用将删除shangsan而lisi的却没有删除(如果想实现两个要么user要么都删除,要么都不删除可以通过事务来控制,若方法出错,如上,则事务rollback回滚都不删除,若方法执行无异常则删除两个user)


/**
     * 根据姓名删除学生信息
     * @param name
     */
    public void delect(String name){//jdbc
       Connection conn = null;
        try {
            conn = JDBC.getConnection();
            String sql = "delete from user where name = ?";
            PreparedStatement ptmt = conn.prepareStatement(sql);
            ptmt.setString(1,name);
            ptmt.execute();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

public void delete(String name1,String name2 ) throws SQLException{//Model
        Connection conn = JDBC.getConnection();
        try {
            conn.setAutoCommit(false);
            User user = new User();
            user.delect(name1);
            String ob = null;
            ob.substring(1);
            user.delect(name2);
            conn.commit();
        } catch (SQLException e) {
            conn.rollback();
            e.printStackTrace();
        }
    }

public static void main(String[] args) throws SQLException {Test

        UserAction ua = new UserAction();
        ua.delete("zhangsan","lisi");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值