Connection(数据库连接对象)

Connection(数据库连接对象)。作用:

1、获取执行SQL的对象。

  •  普通执行SQL对象
    Statement statement = connection.createStatement();
  • 预编译SQL的执行SQL对象,可以防止SQL注入。
    PreparedStatement preparedStatement = connection.prepareStatement(sql);
  • 执行存储过程的对象
    CallableStatement callableStatement = connection.prepareCall(sql);

2、管理事务。

  •  Msql事务管理

            开启事务:BEGIN;/START TRANSACTION;

            提交事务:COMMIT;

    回滚事务:ROLLBACK;

  • JDBC事务管理;Connection接口中定义了3个对应的方法

    开启事务:setAutoCommit(boolean autoCommit);true为自动提交事务;false为手动提交事务,即为开启事务。

    回滚事务:rollback();

JDBC事务示例:

public static void main(String[] args) throws Exception {
        //1、注册JDBC驱动(JDK1.5后无需Class.forName("")操作,而是通过META-INF\services\java .sql.Driver文本中的地址完成注册)
        // Class.forName("com.mysql.cj.jdbc.Driver");

        //2、建立sql连接
        String url = "jdbc:mysql://localhost:3306/database1";
        String username = "root";
        String password = "123456";
        Connection connection = DriverManager.getConnection(url, username, password);

        //3、创建传输器Statement
        Statement statement = connection.createStatement();
        try {
            //开启事务
            connection.setAutoCommit(false);
            //4、运行sql语句
            String sql1 = "UPDATE user SET name = '小明' WHERE identify_id = 1";
            int result1 = statement.executeUpdate(sql1);
            //手动制造异常,当执行到这里时,sql1语句已执行成功,但是因为该异常产生,触发事务回滚,所以执行后sql1语句执行结果不会生效
            int num = 3 / 0;
            //4、运行sql语句
            String sql2 = "UPDATE user SET name = '小李' WHERE identify_id = 2";
            int result2 = statement.executeUpdate(sql2);
            //5、处理运行结果
            //事务提交
            connection.commit();
            System.out.println(result1);
            System.out.println(result1);
        } catch (Exception ex) {
            //事务回滚
            connection.rollback();
        }
        //6、释放资源
        statement.close();
        connection.close();
    }

  

posted @ 2022-12-12 02:52  Amireux-126  阅读(244)  评论(0)    收藏  举报