news 2026/6/15 19:41:03

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/6/15 15:13:47

ZooKeeper Cluster 架构文档

目录标题ZooKeeper Cluster 架构文档集群标识1. 环境信息1.1 Kubernetes 集群1.2 工作节点分布2. 集群架构概览2.1 集群拓扑图2.2 集群规模统计3. Pod 详细信息3.1 Participant 节点Replica 0Replica 1Replica 23.2 Observer 节点4. 容器架构4.1 Pod 容器组成4.2 容器环境变量z…

作者头像 李华
网站建设 2026/6/15 15:23:41

我发现动态因果图补全EHR缺失项慢病管理预警准度飙升

&#x1f4dd; 博客主页&#xff1a;Jax的CSDN主页 目录当AI变成我的私人医生&#xff1a;那些年我们一起追过的健康革命 我和AI医生的第一次约会 医疗AI的"中年危机" 当AI遇上中医&#xff1a;玄学还是科学&#xff1f; 医疗AI的"社交尴尬" 给AI医生的忠告…

作者头像 李华
网站建设 2026/6/13 2:11:55

【毕业设计】基于SpringBoot+Vue的高校志愿活动管理系统的设计与实现(源码+文档+远程调试,全bao定制等)

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

作者头像 李华
网站建设 2026/6/15 18:26:21

基于SpringBoot的高校党员信息管理系统(毕业设计项目源码+文档)

课题摘要在高校党员管理精细化、党务工作数字化需求下&#xff0c;传统党员信息管理存在 “档案更新不及时、信息查询低效、统计分析困难” 的痛点&#xff0c;基于 SpringBoot 构建的高校党员信息管理系统&#xff0c;适配学生党员、教工党员、党务管理员、学院党委、校组织部…

作者头像 李华
网站建设 2026/6/15 15:28:13

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

课题摘要在高校社团规范化运营、活动管理精细化需求下&#xff0c;传统社团管理存在 “成员管理混乱、活动审批繁琐、经费监管低效” 的痛点&#xff0c;基于 SpringBoot 构建的高校社团管理系统&#xff0c;适配社团成员、社团负责人、社联管理员、学校团委等角色&#xff0c;…

作者头像 李华
网站建设 2026/6/15 18:26:11

基于Android的体育运动赛事竞赛报名成绩APP设计_tv700 小程序

文章目录具体实现截图主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;带文档1万…

作者头像 李华