用JDBC建立连接,管理事务

本文介绍了如何使用JDBC建立数据库连接,并详细讲解了事务的四个特性:原子性、一致性、隔离性和持久性,强调了事务在数据库操作中的重要性。
摘要由CSDN通过智能技术生成

**

使用JDBC建立连接

**

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

Class.forName("com.mysql.cj.jdbc.Driver");//加载MySQL驱动
try (
        Connection connection = DriverManager.getConnection(
                pros.getProperty("mysqlURL"),
                pros.getProperty("mysqlUser"),
                pros.getProperty("mysqlPwd"));
        //DriverManager:用于管理JDBC的服务类。主要用来获取connection连接对象,
        //该方法入参依次是地址,用户,密码,并返回对应的数据库连接
        //Connection:数据库连接对象。
        Statement statement = connection.createStatement();
        //Statement:用于执行SQL语句的工具接口。该方法返回用于执行SQL语句的Statement对象,只有获得了Statement之后才可执行SQL语句
        ResultSet resultSet = statement.executeQuery("select empname,salary,age from emp where id>1")
        //ResultSet:结果集对象。
        //executeQuery()该方法只用于执行查询语句,并返回查询结果对应的ResultSet。
        ){
        //ResultSet使用getXxx方法获取记录指针
        while (resultSet.next()){
            System.out.println(" 名字是 :"+resultSet.getString(1)
                    +" 薪金是 :"+resultSet.getDouble(2)
                    +" 年龄是 :"+resultSet.getObject(3));
        }

}
}

**

建立事务

**
关于事务的一些属性

原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。

一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。

隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。

持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久化存储器中。

public void insertInTransaction(String[] sqls) throws Exception{

    Class.forName("com.mysql.cj.jdbc.Driver");
    try (
            Connection connection = DriverManager.getConnection(
                    pros.getProperty("mysqlURL"),
                    pros.getProperty("mysqlUser"),
                    pros.getProperty("mysqlPwd"))
    ){
        connection.setAutoCommit(false);//关闭自动提交,开启事务
        try(
                Statement statement = connection.createStatement()
                ){
            for (String sql :
                    sqls) {
                statement.executeUpdate(sql);
            }
        }
//            catch (Exception e){
//                connection.rollback();
//                e.printStackTrace();
//            }
            //当Connection 遇到一个未处理的SQLException 异常时,系统将会非正常退出,事务
            //也会自动回滚。但如果程序捕获了该异常,则需要在异常处理块中显式地回滚事务。如上面注释的catch

   

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

    }
}

public static void main(String[] args) throws Exception{
    TransactionMySql transactionMySql = new TransactionMySql();
    String[] sqls = new String[]{
            "INSERT INTO emp VALUES(NULL,'小蓝',2000,NULL,18,NULL) ",
            "INSERT INTO emp VALUES(NULL,'小紫',2500,NULL,20,NULL) ",
            //下面这句将会引起异常,导致回滚
            "INSERT INTO emp VALUES(NULL,'小黑',NULL,NULL,18,NULL) "
    };
    transactionMySql.insertInTransaction(sqls);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值