zoukankan      html  css  js  c++  java
  • 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);
            }
        }
    }
  • 相关阅读:
    1509 加长棒
    51Nod 1158 全是1的最大子矩阵
    P2953 [USACO09OPEN]牛的数字游戏Cow Digit Game
    P3384 【模板】树链剖分
    北京集训DAY3
    北京集训DAY2
    北京集训DAY1
    51Nod 1422 沙拉酱前缀 二分查找
    51Nod 1109 01组成的N的倍数
    51Nod 1043 幸运号码 数位DP
  • 原文地址:https://www.cnblogs.com/rijiyuelei/p/12376663.html
Copyright © 2011-2022 走看看