news 2026/4/17 13:26:10

Java数据库操作:JDBC入门5步走

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java数据库操作:JDBC入门5步走

一、JDBC到底是个啥?

咱们先别被“Java Database Connectivity”这个长名字吓到,其实核心特简单:

咱们写Java代码的时候,想操作MySQL、Oracle这些数据库(比如存学生信息、查成绩),但Java和数据库是两个不同的“软件”,它们俩没法直接聊天。这时候JDBC就登场了——它是Java官方提供的一套“翻译+桥梁”工具,能让Java代码和数据库之间顺畅沟通。

举个通俗的例子:你(Java代码)想跟一个外国人(数据库)交流,你不会说外语,他也不懂中文。JDBC就是那个翻译官,你说中文(Java语法),翻译官翻译成外语(数据库能懂的SQL语句),外国人的回复(查询结果)也靠翻译官转成你能懂的Java数据(比如List、对象)。

这里要注意:JDBC只是一套“规则”(接口),不是具体的翻译官。真正干活的是“驱动程序”——比如你用MySQL,就需要MySQL的驱动;用Oracle就需要Oracle的驱动。就像去美国要找会英语的翻译,去日本要找会日语的,驱动就是对应语种的翻译官。

二、入门必看:JDBC核心步骤(附简化代码)

学JDBC不用一开始就死记硬背所有细节,先把核心的5个步骤搞懂,就能写出基本的数据库操作代码。我以“查询学生表(student)数据”为例,一步一步拆解开,每个步骤都标了注释,看不懂算我输!

第一步:准备工作——导入驱动包

就像找翻译官之前得先联系好他一样,我们要先把驱动包导入到项目里。现在主流的IDE是IDEA,最方便的方式是用Maven,直接在pom.xml里加一行依赖,Maven会自动下载驱动包:

<!-- MySQL 8.0+的驱动依赖,复制到pom.xml的dependencies标签里 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency>

如果不用Maven,就去MySQL官网下载驱动jar包,然后手动添加到项目的lib目录里,记得右键“Add as Library”

第二步:编写代码——核心5步走

import java.sql.*; public class JdbcDemo { public static void main(String[] args) { // 1. 定义数据库连接信息(这3行是关键,根据自己的数据库改!) String url = "jdbc:mysql://localhost:3306/你的数据库名?useSSL=false&serverTimezone=Asia/Shanghai"; String username = "root"; // 数据库用户名,默认一般是root String password = "你的数据库密码"; // 你安装MySQL时设置的密码 // 2. 声明需要的对象(Connection是连接,Statement是执行SQL的工具,ResultSet是查询结果) Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 3. 建立连接(相当于找到翻译官,打通沟通渠道) conn = DriverManager.getConnection(url, username, password); System.out.println("连接成功!"); // 4. 执行SQL查询(用Statement对象执行SQL语句,这里查student表所有数据) stmt = conn.createStatement(); String sql = "SELECT * FROM student"; // 要执行的SQL语句 rs = stmt.executeQuery(sql); // 执行查询,结果存在rs里 // 5. 处理查询结果(遍历rs,把数据取出来) while (rs.next()) { // rs.next():判断有没有下一条数据 int id = rs.getInt("id"); // 取id列的值(int类型) String name = rs.getString("name"); // 取name列的值(String类型) int age = rs.getInt("age"); // 取age列的值 System.out.println("学号:" + id + ",姓名:" + name + ",年龄:" + age); } } catch (SQLException e) { // 捕获异常(比如密码错了、数据库名错了,都会在这里报错) e.printStackTrace(); } finally { // 6. 关闭资源(非常重要!用完要关掉,不然会占内存) try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }

三、关键细节拆解(新手最容易踩坑的地方)

1. URL参数别写错!

URL的格式是:jdbc:mysql://主机名:端口号/数据库名?参数1&参数2

  • 主机名:本地数据库就是localhost(如果是远程数据库,写服务器IP)

  • 端口号:MySQL默认是3306,安装时没改就用这个

  • 参数说明:useSSL=false(关闭SSL,不然可能会有警告);serverTimezone=Asia/Shanghai(设置时区为上海,不然会报时区错误,新手必踩!)

2. 资源一定要关闭!

Connection、Statement、ResultSet这三个对象,用完必须关闭,而且要按“ResultSet → Statement → Connection”的顺序关(先关结果,再关执行工具,最后关连接)。放在finally里是因为不管代码有没有报错,finally里的代码都会执行,保证资源能释放。

3. 不同操作用不同的执行方法

我上面用的是executeQuery(),这是专门执行“查询语句”(SELECT)的;如果是执行“增删改”(INSERT、DELETE、UPDATE),要用executeUpdate(),它会返回受影响的行数(比如插入1条数据,就返回1):

// 示例:插入一条学生数据 String insertSql = "INSERT INTO student(name, age) VALUES('张三', 20)"; int rows = stmt.executeUpdate(insertSql); System.out.println("插入了" + rows + "条数据");

四、总结一下

JDBC其实就是Java操作数据库的“桥梁”,核心步骤就5个:导入驱动→建立连接→执行SQL→处理结果→关闭资源。新手不用一开始就追求高深的知识,先把基础步骤练熟,写几个增删改查的例子,慢慢就能理解背后的逻辑了。

我刚开始练的时候,经常因为URL写错、密码输错、忘记关闭资源报错,多试几次、多查几次错误信息就好了。编程这东西,光看没用,一定要动手写!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 9:22:15

基于SpringBoot的高校竞赛管理系统(毕业设计项目源码+文档)

课题摘要在高校学科竞赛规范化管理、赛事资源整合需求下&#xff0c;传统竞赛管理存在 “报名流程繁琐、赛事数据分散、成果统计低效” 的痛点&#xff0c;基于 SpringBoot 构建的高校竞赛管理系统&#xff0c;适配参赛学生、指导教师、赛事管理员、学院 / 学校教务部门等角色&…

作者头像 李华
网站建设 2026/4/18 9:22:19

计算机Java毕设实战-基于JavaWeb的点餐系统的设计与实现基于Spring Boot的餐厅点餐管理系统设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/18 7:57:23

【大模型技术研究】SGLang入门指南:高效大模型推理与编程的利器(附实战代码)

在大模型应用开发中,开发者常常面临动态提示构建繁琐、多轮对话效率低下、推理流程与业务逻辑耦合过紧等问题。而SGLang的出现,恰好针对性解决了这些痛点——它是一款专为大模型设计的编程语言与运行时环境,通过简洁的语法和高效的执行引擎,大幅提升大模型推理的开发效率和…

作者头像 李华
网站建设 2026/4/18 8:51:08

Router_编程式路由

安装路由的依赖Add.vue <script setup></script><template><div><h1> Add </h1></div> </template><style scoped></style>Home.vue <script setup></script><template><div><h1> …

作者头像 李华
网站建设 2026/4/18 8:16:55

Android16 3576强制关闭HDR模式

原来项目在Android15 RK3588上面的device\rockchip\rk3588\rk3588_u\rk3588_u.mk里面写: #close hdr PRODUCT_PROPERTY_OVERRIDES += persist.vendor.hwc.hdr_force_disable=1 但是在RK3576的Android16的项目里面写这个属性已经没有效果了,想到一个方式,直接硬件 合成器代码…

作者头像 李华