当前位置: 首页 > news >正文

数据库---JDBC

本系列可作为数据库学习系列的笔记,文中提到的一些练习的代码,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。

点赞关注不迷路!您的点赞、关注和收藏是对小编最大的支持和鼓励!

系列文章目录

JAVA初阶---------已更完

JAVA数据结构---------已更完

数据库---Day 1 数据库基础

数据库---Day2 数据库操作

数据库---Day3 数据类型

数据库---Day4 数据表的操作

数据库---Day5 数据表的增删改查

数据库---Day6 数据库约束

数据库---Day7 数据表设计

数据库---Day8 多表联合查询

数据库---Day10 索引

数据库---Day11 事务

数据库---JDBC


目录

目录

系列文章目录

目录

前言

一、什么是JDBC

二、为什么需要JDBC

第一步

第二步

第三步

第四步

三、JDBC架构图

四、JDBC工作原理

五、搭建JDBC开发环境

1 Maven项目

2 配置阿里云镜像

六、导入MySQL驱动

七、JDBC核心接口

八、DriverManager

九、Connection对象

十、连接MySQL数据库

1 注册驱动

2 获取连接

十一、MySQL连接URL详解

UTF8编码

SSL

公钥认证

十二、DataSource数据源

十三、DriverManager与DataSource区别

DriverManager

DataSource

对比表

十四、Statement对象

十五、执行查询

十六、执行增删改

十七、ResultSet结果集

十八、遍历结果集

十九、ResultSet游标机制

二十、SQL注入问题

二十一、什么是SQL注入

二十二、PreparedStatement

二十三、为什么PreparedStatement防SQL注入

二十四、PreparedStatement优势

防SQL注入

提高性能

代码更规范

二十五、CallableStatement

二十六、资源释放

二十七、完整查询案例

二十八、JDBC标准CRUD案例

查询

插入

修改

删除

二十九、JDBC开发规范

三十、JDBC执行流程总结

三十一、JDBC面试题总结

JDBC是什么?

JDBC核心对象有哪些?

executeQuery与executeUpdate区别?

Statement和PreparedStatement区别?

DataSource为什么比DriverManager好?

三十二、学习路线总结

结语

总结


前言

在Java开发中,数据库几乎是所有项目的核心组成部分。

无论是:

  • 电商系统
  • 学生管理系统
  • OA办公系统
  • ERP系统
  • 银行系统

都需要将数据持久化到数据库。

那么:

Java程序如何与MySQL数据库通信

答案就是:

JDBC(Java Database Connectivity)

JDBC是Java官方提供的一套数据库访问标准接口。

它相当于:

Java程序 ↓ JDBC ↓ MySQL / Oracle / SQLServer

JDBC屏蔽了不同数据库之间的差异,使Java程序能够通过统一接口访问各种数据库。

一、什么是JDBC

JDBC:

Java Database Connectivity

中文:

Java数据库连接技术

JDBC本质上是一组接口规范。

Java官方负责定义接口:

Connection Statement PreparedStatement ResultSet

数据库厂商负责实现:

MySQL Driver Oracle Driver SQLServer Driver

这样开发者只需要学习一套API即可。

二、为什么需要JDBC

先回顾人工操作数据库的过程:

第一步

连接数据库

mysql -uroot -p

第二步

输入SQL

select * from student;

第三步

获取结果

Tom Jack Lucy

第四步

关闭连接

exit

程序访问数据库其实也是同样流程:

建立连接 ↓ 发送SQL ↓ 获取结果 ↓ 关闭连接

如果没有JDBC:

Java程序员 ↓ 自己实现MySQL协议 ↓ 自己实现Oracle协议 ↓ 自己实现SQLServer协议

工作量巨大。

因此Java提出:

统一接口 厂商实现

这就是JDBC诞生的原因。

三、JDBC架构图

Java程序 │ ▼ JDBC API ┌─────┼─────┐ ▼ ▼ ▼ MySQL Oracle SQLServer

JDBC位于:

应用程序 与 数据库 之间

起桥梁作用。

四、JDBC工作原理

课件中总结为六个步骤:

1 加载驱动 2 建立连接 3 创建Statement 4 执行SQL 5 处理结果 6 关闭资源

完整流程:

Class.forName() ↓ DriverManager ↓ Connection ↓ Statement ↓ executeQuery() ↓ ResultSet ↓ close()

五、搭建JDBC开发环境

1 Maven项目

创建Maven工程:

<project> </project>

2 配置阿里云镜像

<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <url> https://maven.aliyun.com/repository/public </url> </mirror>

作用:

提高依赖下载速度

课件中已经给出完整配置。

六、导入MySQL驱动

在pom.xml中添加:

<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency>

作用:

让Java拥有访问MySQL能力

七、JDBC核心接口

JDBC最重要的五个对象:

DriverManager Connection Statement PreparedStatement ResultSet

八、DriverManager

作用:

获取数据库连接

例如:

Connection connection = DriverManager.getConnection( url, username, password );

九、Connection对象

Connection表示:

数据库连接

也叫:

会话(Session)

所有SQL执行必须依赖Connection。

十、连接MySQL数据库

1 注册驱动

Class.forName( "com.mysql.cj.jdbc.Driver" );

2 获取连接

Connection connection = DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/test", "root", "123456" );

十一、MySQL连接URL详解

格式:

jdbc:mysql://IP:端口/数据库名

示例:

jdbc:mysql://127.0.0.1:3306/student_db

常见参数:

UTF8编码

characterEncoding=utf8

SSL

useSSL=false

公钥认证

allowPublicKeyRetrieval=true

完整示例:

jdbc:mysql://127.0.0.1:3306/student_db ?characterEncoding=utf8 &allowPublicKeyRetrieval=true &useSSL=false

十二、DataSource数据源

现代开发推荐:

DataSource

而不是:

DriverManager

创建数据源:

MysqlDataSource ds = new MysqlDataSource(); ds.setURL(url); ds.setUser("root"); ds.setPassword("123456");

十三、DriverManager与DataSource区别

这是面试高频题。

DriverManager

特点:

每次创建新连接 每次关闭真实连接

问题:

频繁创建连接 性能差

DataSource

特点:

连接池管理 连接可复用

关闭连接:

归还连接池

而不是:

真正关闭

对比表

对比项DriverManagerDataSource
连接创建每次新建连接池
性能
资源利用率
企业开发很少使用广泛使用

十四、Statement对象

创建:

Statement statement = connection.createStatement();

作用:

执行SQL

十五、执行查询

ResultSet rs = statement.executeQuery( "select * from student" );

返回:

ResultSet

十六、执行增删改

int rows = statement.executeUpdate( "update student set age=20" );

返回:

受影响行数

十七、ResultSet结果集

ResultSet:

查询结果集合

例如:

select * from student

返回:

ResultSet

十八、遍历结果集

while(rs.next()){ }

next作用:

游标下移一行

读取字段:

rs.getLong("id"); rs.getString("name"); rs.getInt("age");

十九、ResultSet游标机制

初始状态:

第一行之前

执行:

rs.next();

变成:

第一行

再次执行:

rs.next();

变成:

第二行

直到:

false

表示结束。

二十、SQL注入问题

这是JDBC最重要知识点之一。

错误写法:

String sql = "select * from student where name='" + name + "'";

如果用户输入:

' or 1=1 --

最终SQL:

select * from student where name='' or 1=1

结果:

返回全部数据

数据库被攻击。

课件给出了完整案例。

二十一、什么是SQL注入

本质:

用户输入参与SQL结构拼接

导致:

SQL语义被篡改

严重时:

数据泄露 数据修改 数据删除

二十二、PreparedStatement

解决方案:

PreparedStatement

企业开发100%使用。

创建:

PreparedStatement ps = connection.prepareStatement( "select * from student where name=? and class_id=?" );

赋值:

ps.setString(1,"宋江"); ps.setLong(2,2);

执行:

ResultSet rs = ps.executeQuery();

二十三、为什么PreparedStatement防SQL注入

原因:

SQL结构 与 参数值 分离

数据库先编译:

select * from student where name=?

然后绑定参数:

宋江

即使输入:

' or 1=1 --

也只会当普通字符串处理。

二十四、PreparedStatement优势

防SQL注入

最重要。

提高性能

SQL预编译:

编译一次 执行多次

代码更规范

?

代替:

字符串拼接

二十五、CallableStatement

作用:

调用存储过程

例如:

CallableStatement

企业项目较少直接使用。

二十六、资源释放

必须释放:

ResultSet Statement Connection

顺序:

后创建先释放

即:

ResultSet ↓ Statement ↓ Connection

二十七、完整查询案例

查询学号1学生信息:

PreparedStatement ps= connection.prepareStatement( "select * from student where id=?" ); ps.setLong(1,1); ResultSet rs= ps.executeQuery(); if(rs.next()){ System.out.println( rs.getString("name") ); }

课件第10~11页给出了完整实现。

二十八、JDBC标准CRUD案例

查询

select * from student

插入

insert into student(name,age) values(?,?)

修改

update student set age=? where id=?

删除

delete from student where id=?

二十九、JDBC开发规范

推荐:

DataSource PreparedStatement

不要:

Statement 字符串拼接SQL

三十、JDBC执行流程总结

加载驱动 ↓ 获取连接 ↓ 创建PreparedStatement ↓ 绑定参数 ↓ 执行SQL ↓ 处理ResultSet ↓ 关闭资源

三十一、JDBC面试题总结

JDBC是什么?

Java数据库连接规范。

JDBC核心对象有哪些?

DriverManager DataSource Connection Statement PreparedStatement ResultSet

executeQuery与executeUpdate区别?

executeQuery

返回:

ResultSet

用于:

select
executeUpdate

返回:

int

用于:

insert update delete

Statement和PreparedStatement区别?

PreparedStatement:

预编译 防SQL注入 性能更高

DataSource为什么比DriverManager好?

因为:

连接池 连接复用 性能更高

三十二、学习路线总结

学习JDBC建议按照下面顺序:

JDBC基础 ↓ PreparedStatement ↓ 事务(Transaction) ↓ 连接池(Druid/HikariCP) ↓ DBUtils ↓ MyBatis ↓ MyBatis Plus ↓ Spring JDBC ↓ Spring Data JPA

结语

JDBC是Java后端开发的基础中的基础。

虽然企业开发中已经大量使用:

  • MyBatis
  • MyBatis Plus
  • Spring Data JPA

但这些框架的底层依然建立在JDBC之上。

因此掌握JDBC不仅能够帮助我们理解数据库访问原理,更是学习MyBatis、SpringBoot持久层框架的必经之路。

记住一句话:

JDBC = Java访问数据库的标准规范;

Connection负责连接数据库;

PreparedStatement负责安全执行SQL;

ResultSet负责接收查询结果;

DataSource负责高效管理连接池。

这套知识掌握后,你已经具备了从 JDBC 进入 MyBatis、SpringBoot 数据持久化开发的基础。全文内容根据《JDBC编程》课件系统整理。


总结

以上就是今天要讲的内容,本文简单记录了数据库学习内容,仅作为一份简单的笔记使用,大家根据注释理解,您的点赞关注收藏就是对小编最大的鼓励!

http://www.rkmt.cn/news/1460060.html

相关文章:

  • DS4Windows:让你的PlayStation手柄在Windows上完美运行
  • 终极Sunshine游戏串流指南:三分钟实现跨设备畅玩
  • GPT-5.5服务化与具身智能理赔:AI责任锚定落地实践
  • HoRain云--Codex 权限设置
  • 双非本科生也能抓住大模型红利期?收藏这份Agent开发实战指南!
  • 2026呼和浩特正规金银回收门店精选榜单|黄金铂金彩金白银回收靠谱商家电话汇总 - 余生黄金回收
  • Siri等了15年,终于要像个人了:WWDC 2026五天倒计时全预测
  • AI工具链×智能标签协同落地:3步实现标签准确率从68%跃升至92.7%(附企业级评估矩阵)
  • 广州黄金回收榜单:盘点口碑最好的几家店,附地址全收录指南 - 奢侈品回收评测
  • 如何用XUnity.AutoTranslator打破游戏语言壁垒:5个实用技巧让你畅玩全球游戏
  • 从零打造可编程LED灯带:Arduino与WS2812B实战指南
  • 【2024最严合规落地手册】:AI工具接入智能问答必须通过的6项GDPR+等保2.0交叉审计项
  • MySQL 查询性能核武器
  • 抖音批量下载神器:告别手动保存,轻松获取无水印视频
  • 太原市尖草坪区致尚家具维修:太原窗帘定制公司 - LYL仔仔
  • STM32H743VIT6最小系统板AD工程包:原理图+PCB+封装库全开源
  • 告别特征冗余!实战解析ACL-NN:如何让HSI和SAR图像在土地覆盖分类中“优势互补”
  • 2026年6月权威排行榜出炉 芳北咨询为高端战略规划头部企业 - damaigeo
  • SpringBoot配置绑定【c】
  • Grok 4.1事实性增强三大核心技术解析:DCR、因果链标注与反事实蒸馏
  • 2026西宁装修公司靠谱推荐榜|本地装修公司综合评估 - 资讯纵览
  • 小红书限制下载怎么保存视频?2026实测这4招+2款神器直接搞定 - 科技热点发布
  • Matlab一键计算蜗杆传动最优参数:模数、导程角、齿数比自动优化工具
  • 2026年广州全屋定制市场权威排行榜:从资质到工艺,揭秘广州奥莱娅等五大优选品牌 - damaigeo
  • 合肥主流装修公司实力排行 基于口碑与交付能力测评 - 奔跑123
  • 从智能剥壳机到车载升降台:我的DIY双线轨丝杠平台搭建全记录(附A4988避坑指南)
  • 2026 厦门防水修缮|滨海潮汐倒渗 + 海盐雾腐蚀 + 回南天全屋凝水 + 台风暴雨灌漏 + 同安靠山岩缝渗水,厨卫免砸砖|苏易修缮厦门全域免费仪器测漏 - 苏易修缮
  • Amazfit Active 3 Premium评测:170美元能否成为跑步新手的完美之选?
  • FPGA GTX收发器调试避坑指南:如何解决链路训练失败、数据错位和时钟不稳?
  • 航空客户价值分析教学包:R环境安装包+RFM实战代码+真实数据+52页PPT课件