• JDBC教程


    JDBC教程
    使用流程
    • 注册驱动

      Class.forName("com.mysql.cj.jdbc.Driver");
      
      • 1
    • 获取连接

      Connection connection=DriverManager.getConnection(url,username,password)
      
      • 1
    • 定义SQL语句

      String sql="select xxx from table";
      
      • 1
    • 获取执行SQL对象

      Statement statement = connection.createStatement();
      
      • 1
    • 执行SQL

      statement.execute(sql);
      
      • 1
    • 获取返回后的结果

      ResultSet resultSet = statement.getResultSet();
      
      • 1
    • 释放资源

      statement.close();
      connection.close();
      
      • 1
      • 2
    常用API
    DriverManger(驱动管理类)
    • registerDriver(Driver driver)

      • 作用:用于注册驱动

      • 参数:驱动对象

      • Class.forName(“com.mysql.cj.jdbc.Driver”) 注册驱动底层实现

        static {
                try {
                    java.sql.DriverManager.registerDriver(new Driver());//类被加载时调用注册方法
                } catch (SQLException E) {
                    throw new RuntimeException("Can't register driver!");
                }
            }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
    • getConnection(url,username,password)

      • 作用:用于创建数据库连接

      • 参数: url:数据库连接url username:用户名 password:密码

      • 返回值:Connection对象

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

    1.获取执行SQL的对象

    2.管理事务

    • 获取普通执行SQL对象

      connection.createStatement()
      
      • 1
      • 返回值:Statement
    • 获取预编译SQL执行对象(防止SQL注入)

      connection.prepareStatement(sql)
      
      • 1
      • 参数:SQL语句
      • 返回值:PreparedStatement
    • 获取执行存储过程对象

      connection.prepareCall(sql)
      
      • 1
      • 参数:SQL语句
      • 返回值:CallableStatement

    事务管理API

    • 开启事务

       connection.setAutoCommit();
      
      • 1
      • 作用:设置是否开启自动提交:true为自动提交事务,false为手动提交事务,即开启事务
    • 提交事务

      connection.commit();
      
      • 1
    • 回滚事务

      connection.rollback();
      
      • 1
    Statement(普通SQL执行对象)

    作用:执行SQL语句

    • statement.executeQuery()
      • 作用:执行DQL语句
      • 返回值:ResultSet对象
    • statement.executeUpdate()
      • 作用:执行DML、DDL语句
      • 返回值:受影响行数
    ResultSet(结果集对象)

    作用:获取查询结果

    • resultSet.next()
      • 作用:将游标向前移动一行(游标默认在第一行的前一行),判断当前行是否为有效行
      • 返回值:true:当前行有数据 false:当前行没有数据
    • resultSet.getXX()
      • 作用:获取数据
      • XX:数据类型
      • 参数:int:根据列索引获取数据(从1开始) String:根据列名获取数据
    PreparedStatement

    作用:预编译SQL并执行SQL语句,利用转义符对参数进行转义处理

    • setXxx(参数1,参数2)
      • 作用:给占位符赋值
      • 参数: 参数1:占位符的位置,从1开始 参数2:替换的值

    操作流程

    • 获取PreparedStatement对象:sql中的参数用?进行占位

      connection.prepareStatement(sql)
      
      • 1
    • 设置参数值setXxx

    • 执行SQL:executeUpdate() executeQuery() 不需要再传递sql

    原理:

    1.在获取PreparedStatement对象时,将sql语句发送给mysql服务器进行检查、编译(步骤很耗时)

    2.执行时就不用再进行这些步骤了,速度更快

    3.如果sql模板一样,则只需要进行一次检查、编译

    开启PreparedStatment预编译功能:在url参数中添加useServerPrepStmts=true

  • 相关阅读:
    uniapp项目实践总结(十五)使用websocket实现简易聊天室
    vue中省市区
    MaxKey单点登录认证系统v3.5.10GA发布
    LSTM基础
    软件开发工程师笔试记录--关键路径,浮点数计算,地址变换,中断向量,I/O接口,海明码
    MIT课程分布式系统学习04——PrimaryBackup Replication for Fault Tolerance
    Linux常用快捷键汇总
    详解设计模式:访问者模式
    阿里5年经验之谈 —— 记录一次jmeter压测的过程!
    深度学习pytorch小实验
  • 原文地址:https://blog.csdn.net/qq_52751442/article/details/126710721