JDBC底层原理

JDBC是Java访问数据库的标准接口,它通过注册Driver、建立连接、创建Statement或PreparedStatement、执行SQL以及处理结果来操作数据库。本文详细解析了JDBC的六大步骤,包括PreparedStatement与Statement的区别、SQL执行顺序及ResultSet的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

  JDBC是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC结构:

DriverManager (是一工厂实现类,用了工厂方法模式)
Driver (是驱动程序对象的接口,指向具体数据库驱动程序对象=DriverManager.getDriver(String URL))
Connection (是连接对象接口,指向具体数据库连接对象=Drivermanager.getConnection(String URL))
Statement (执行静态SQL语句接口,=Connection.CreateStatement())
ResultSet (是指向结果集对象的接口,=Statement.excuteXXX())

实现六大步骤
1.注册一个Driver
实例化时自动向DriverManager注册

Connection conn = null;
Statement stat = null;
ResultSet rs = null;
Class.forName("com.mysql.jdbc.Driver");

使用反射优点:解耦

2.建立一个到数据库的连接

conn = DriverManager.getConnection("jdbc:mysql:///mydb5", "root", "root");

当系统中有多个驱动时,手动管理很麻烦,所以DriverManager类会帮我们管理。原理:
1、它会自己保存一份所有的驱动列表
2、前面已经调用Class.forName(),系统已经加载了我们所需要的实现类
3、DriverManager加载进来时会执行以下静态语句

    static {
        loadInitialDrivers();
        println("JDBC DriverManager initialized");
    }

4、loadInitialDrivers方法会加载系统中已经加载的所有驱动Driver存放到刚刚那个list里面。然后我们调用getConnection时,它就会遍历列表的驱动,帮我们找到合适的驱动Driver并使用

3.创建一个Statement

stat = conn.createStatement();

Statement与PreparedStatment区别: PreparedStatement是带预编译功能的。但Statement是没有参数的,而PreparedStatement的参数是sql的字符串(因为它要预编译sql,所以必须要有sql参数)

4.执行SQL语句

rs = stat.executeQuery("select * from account");

SQL执行顺序:
写的顺序:select … from… where… group by… having… order by… limit
执行顺序:from… where…group by… having… select … order by… limit
Select语句完整的执行顺序:
  1、from子句组装来自不同数据源的数据
  2、where子句基于指定的条件对记录行进行筛选
  3、group by子句将数据划分为多个分组
  4、使用聚集函数进行计算
  5、使用having子句筛选分组
  6、计算所有的表达式
  7、使用order by对结果集进行排序

from a join b 与 from a, b 产生的临时表结果集都是执行笛卡尔积即(select * from a cross join b )两表的行乘积数。

on :与取得结果集同步进行数据刷选及过滤。
where : 获得结果集之后,才进行数据刷选及过滤。
执行顺序:on在上游,where在中游,having在下游。

5.处理结果
<1> 查询语句,返回记录集ResultSet
<2> 更新语句,返回数字,表示该更新影响的记录数(0,表示未更新,-1表示更新失败)
<3> ResultSet的方法:while(re.next())
next(),将游标往后移动一行,如果成功返回true;否则返回false
getInt(“id”)或getSting(“name”),返回当前游标下某个字段的值

6.关闭JDBC对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值