• JDBC-API详解-Connection类


    Connection API帮助文档

    该包属于: java.sql.Connection
    在这里插入图片描述



    一. Connection作用

    Connection 接口,具体的实现类由数据库的厂商实现,代表一个连接对象。

    二. Connection执行

    1、获取执行SQL的对象

    • 普通执行SQL对象
    Statement createStatement();
    
    • 1
    • 预编译SQL执行SQL对象:防止SQL注入
    PrepareStatement prepareStatement (sql);
    
    • 1
    • 执行存储过程对象
    CallableStatement prepareCall(sql);
    
    • 1

    2、事务管理

    1. 管理

    • MySQL事务管理

    开启事务:begin或者start transaction
    提交事务:commit
    回滚事务:rollback

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

    开启事务:setAutoCommit(boolean aotuCommit)
    提交事务:commit()
    回滚事务:rollback()

    2.案例

    分析1: 成功情况下

    代码如下(示例):

    package Web.JDBCDemo;
    
    
    import org.junit.jupiter.api.Test;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class JDbCDemo2 {
    
        @Test
        public void connect1() throws ClassNotFoundException, SQLException {
            //注册驱动
            Class.forName("com.mysql.jdbc.Driver");
    
            //驱动连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1?useSSL=false","root","o676448");
    
            //开始声明
            Statement state = conn.createStatement();
    
            //定义语句
            String sql="update account set money=money+500 where id=1";
    
            String sql1="update account set money=money-500 where id=2";
            //执行语句
            int i = state.executeUpdate(sql);
            int i1 = state.executeUpdate(sql1);
    
            //判断语句
            if (i>0&&i1>0){
                System.out.println("执行成功");
            }else{
                System.out.println("执行失败");
            }
    
            //关闭流
            state.close();
            conn.close();
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    在这里插入图片描述
    该处使用的url网络请求的数据。
    在这里插入图片描述

    分析2: 失败情况下

    package Web.JDBCDemo;
    
    
    import org.junit.jupiter.api.Test;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class JDbCDemo2 {
    
        @Test
        public void connect1() throws ClassNotFoundException, SQLException {
            //注册驱动
            Class.forName("com.mysql.jdbc.Driver");
    
            //驱动连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db1?useSSL=false","root","o676448");
    
            //开始声明
            Statement state = conn.createStatement();
    
            //定义语句
            try {
                /**
                  开启事务
                 */
                conn.setAutoCommit(false);
    
                String sql = "update account set money=money+500 where id=1";
    
                //此时此刻定义异常
                int ii = 10 % 0;
    
                String sql1 = "update account set money=money-500 where id=2";
                //执行语句
                int i = state.executeUpdate(sql);
                int i1 = state.executeUpdate(sql1);
                //判断语句
                if (i>0&&i1>0){
                    System.out.println("执行成功");
                }else{
                    System.out.println("执行失败");
                }
    
                //提交事务
                conn.commit();
            }catch(Exception e){
                  conn.rollback();
                System.out.println("执行失败");
            }finally{
                //关闭流
                state.close();
                conn.close();
            }
    
    
    
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

  • 相关阅读:
    SmartX 超融合 5.1 版本有哪些新特性和技术提升?
    剑指 Offer II 114+115+116+117+LC827
    程序员必读书籍有哪些值得推荐?
    WPF线程模型
    现货白银的代码为什么不是ag
    Casrel论文代码遇到的问题,已解决
    supOS APP开发者课程练习册
    springAop原理分析-动态代理对象创建过程分析
    vue3 vite2 封装 SVG 图标组件 - 基于 vite 创建 vue3 全家桶项目续篇
    http直接调用paddlepaddle实现文字转语音,语音转文字
  • 原文地址:https://blog.csdn.net/o676448/article/details/126768592