JDBC——Connection数据库连接对象

功能

1.获取执行SQL的对象

方法:createStatement() 用于创建向数据库发送SQL语句的一个对象。
修饰/返回值类型:Statement(声明)

方法:prepareStatement(String sql) 用于创建向数据库发送SQL语句的一个对象。
修饰/返回值类型:PreparedStatement (准备好的 声明)

2.管理事物

事物:一个或一组SQL语句组成一个执行单元,要么全部执行,要么全不执行

开启事物
  方法:setAutoCommit(boolean autoCommit) 调用该方法设置参数为false即开启事物(autoCommit自动提交)false错true对
  修饰/返回值类型:void (空的)

提交事物
  方法:commit()
  修饰/返回值类型:

回滚事物
  方法:rollback()
  修饰/返回值类型:

package cn.itcast.jdbc;

import cn.itcast.util.JDBCUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

/**
 * 事物操作 转账方法
 */
public class JdbcDemo12 {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt1 = null;
        PreparedStatement pstmt2 = null;
        try {
            //1.获取去数据库连接
            conn = JDBCUtils.getConnection();
            //开启事物
            conn.setAutoCommit(false);
            //2.定义SQL
            //2.1A的lowest_sal-500
            String sql1 = " update job_grades set lowest_sal = lowest_sal-? where grade_level =?;";
            //2.2B的lowest_sal+500
            String sql2 = " update job_grades set lowest_sal = lowest_sal+? where grade_level =?;";
            //3.获取执行SQL的对象
            pstmt1 = conn.prepareStatement(sql1);
            pstmt2 = conn.prepareStatement(sql2);
            //4.设置参数
            pstmt1.setDouble(1, 500);
            pstmt1.setString(2, "A");

            pstmt2.setDouble(1, 500);
            pstmt2.setString(2, "B");

            //5.执行SQL语句
            pstmt1.executeUpdate();
            //手动制造异常
            int i = 3 / 0;
            pstmt2.executeUpdate();

            //提交事物
            conn.commit();

        } catch (Exception e) {//只要出异常就回滚所以要用一个大的把异常都抓到
            //出异常就会进入catch内,所以在这里进行回滚
            try {
                if (conn != null) {
                    conn.rollback();
                }
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
        } finally {
            JDBCUtils.close(pstmt1, conn);
            JDBCUtils.close(pstmt2, null);
        }
    }
}
原文地址:https://www.cnblogs.com/rijiyuelei/p/12376663.html