【JDBC篇】java连接mysql数据库过程原理剖析(一)

本文以java连接mysql为例讲解;仅仅记录了一部分知识点,其余我还没学完,后面会补充!初学JDBC文章仅仅是我个人对知识点的理解,请谨慎参考!

目录

对JDBC的进一步理解:

JDBC程序步骤:

注册驱动类底层剖析:

 建立连接底层剖析:

          几个重要的类:


对JDBC的进一步理解:

        JDBC是一套接口(面向接口写实现类,能够解耦合,提高代码的扩展力)是由Java语言编写的一堆接口和一些class类组成的一套工具类的程序。它仅仅是一套规范。也就是说JDBC并不能直接连接和操作数据库,真正连接和操作数据库的,是各大数据库服务商按照JDBC这套规范写出来的驱动Jar包,JDBC和驱动包的关系,就是接口与实现类的关系。

JDBC程序步骤:

  1. 注册驱动(JDK6后会自动注册,可忽略该步骤);
  2. 通过DriverManager获得Connection对象(创建连接);
  3. 通过Connection获得PreparedStatement获取数据库操作对象;
  4. 设置PreparedStatement的参数,也就是编写sql语句;
  5. 执行保存操作,调用 preparedStatement.execute();
  6. 释放资源,包括ConnectionPreparedStatement

注册驱动类底层剖析:

String driverName = "com.mysql.cj.jdbc.Driver";
//2.实例化Driver
Class clazz = Class.forName(driverName);
Driver driver = (Driver) clazz.newInstance();
//3.注册驱动
DriverManager.registerDriver(driver);

        实例化mysql驱动(com.mysql.cj.jdbc.Driver)的时候,会通过 DriverManager.registerDriver 方法来注册驱动。其底层实现是,将mysql驱动中的Driver 对象包装为 DriverInfo(驱动程序信息),存储在一个专门存放DriverInfo的DriverManager.registeredDrivers 集合中。

 建立连接底层剖析:

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test");

        使用 DriverManager.getConnection 方法来建立与 MySQL 服务器的连接。其底层实现是,通过信息"jdbc:mysql://localhost:3306/test"遍历DriverManager.registeredDrivers 集合(存放DriverInfo(驱动程序信息))通过协议匹配已注册的数据库驱动,如果存在对应驱动就创建连接;这里是 com.mysql.cj.jdbc.Driver 实例。

for(DriverInfo aDriver : registeredDrivers) { // 遍历已注册的数据库驱动
    if(isDriverAllowed(aDriver.driver, callerCL)) {
        try {
            println("    trying " + aDriver.driver.getClass().getName());
            Connection con = aDriver.driver.connect(url, info); //建立数据库连接返回连接对象
            if (con != null) {
                // Success!
                println("getConnection returning " + aDriver.driver.getClass().getName());
                return (con);
            }
        } catch (SQLException ex) {
            if (reason == null) {
                reason = ex;
            }
        }
    } else {
        println("    skipping: " + aDriver.getClass().getName());
    }
}

几个重要的类:

类名作用
DriverManager驱动管理器,用于注册驱动,是获取 Connection对象的入口
Driver数据库驱动,用于获取Connection对象
Connection数据库连接,用于获取Statement对象、管理事务
Statementsql执行器,用于执行sql
ResultSet结果集,用于封装和操作查询结果
prepareCall用于调用存储过程
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值