海风游戏狂欢季-独家活动首发平台

java 怎么连数据库,Java 程序链接数据库教程
2025-09-28 00:33:15

在 Java 开发中,数据库连接是实现数据持久化的核心环节,也是后端开发的必备技能。无论是开发管理系统、电商平台还是移动应用后端,都需要通过 Java 程序与数据库进行交互。对于新手来说,数据库连接可能充满挑战,比如不知道如何导入驱动、编写连接代码时频繁报错等。本文将从环境准备到实战案例,手把手教你用 Java 连接数据库,还会总结常见问题的解决办法,让你轻松掌握这一关键技能。

一、连接数据库前的准备工作

在编写 Java 连接数据库的代码前,需要完成一系列准备工作,就像盖房子前要准备好砖瓦和工具一样。这些准备工作虽然简单,但缺一不可,直接影响后续连接是否成功。

1. 明确目标:确定连接的数据库类型

Java 可以连接多种数据库,如 MySQL、Oracle、SQL Server 等,不同数据库的连接方式略有差异。新手建议从 MySQL 入手,因为它开源免费、使用广泛,且与 Java 的适配性很好。本文将以 MySQL 为例进行讲解,如果你使用其他数据库,只需替换对应的驱动和连接参数即可。

2. 安装并启动数据库

首先要确保你的电脑上已经安装了 MySQL 数据库(如果还没安装,可以参考之前的 MySQL 安装教程)。安装完成后,通过命令行或图形化工具(如 Navicat)启动数据库服务,并用mysql -u root -p命令登录,确认数据库能正常运行。登录成功后,建议创建一个用于测试的数据库和表,比如创建一个名为testdb的数据库,再创建一个user表并插入几条测试数据:

CREATE DATABASE testdb;

USE testdb;

CREATE TABLE user (

id INT PRIMARY KEY AUTO_INCREMENT,

username VARCHAR(20) NOT NULL,

age INT

);

INSERT INTO user(aby.danyredsun.com, age) VALUES('张三', 20), ('李四', 22);

3. 下载数据库驱动(JDBC 驱动)

Java 通过 JDBC(Java Database Connectivity)技术连接数据库,而 JDBC 需要对应的数据库驱动才能工作。就像不同品牌的打印机需要安装不同的驱动程序一样,不同的数据库也需要对应的 JDBC 驱动。

MySQL 驱动下载:访问MySQL 官网驱动下载页,选择与你的 MySQL 版本匹配的驱动。MySQL 8.0 以上版本建议下载mysql-connector-java-8.0.x.jar,注意区分操作系统(选择 Platform Independent 版本)。

驱动版本选择:如果你的 MySQL 是 5.x 版本,下载mysql-connector-java-5.1.x.jar;8.0 版本则下载 8.0.x 版本,版本不匹配会导致连接失败。

4. 准备 Java 开发环境

确保已经安装了 JDK 并配置好环境变量,推荐使用 IDE(集成开发环境)来编写代码,如 IntelliJ IDEA 或 Eclipse。IDE 能提供代码提示、语法检查等功能,大幅降低新手的出错概率。以 IntelliJ IDEA 为例,新建一个 Java 项目(选择 Java Application),为项目添加 JDBC 驱动:

在项目根目录下创建lib文件夹,将下载的 JDBC 驱动 JAR 包复制到该文件夹中。

右键点击 JAR 包,选择 “Add as Library”,将驱动添加到项目的类路径中,否则 Java 程序会找不到驱动类。

二、Java 连接数据库的核心步骤

完成准备工作后,就可以开始编写连接代码了。Java 连接数据库的过程可以分为加载驱动、建立连接、执行 SQL 语句、处理结果和关闭资源五个步骤,这五个步骤环环相扣,每一步都有需要注意的细节。

1. 加载 JDBC 驱动

驱动是 Java 与数据库之间的 “翻译官”,必须在连接前加载。对于 MySQL 5.x 版本,加载驱动的代码为:

Class.forName("abz.ruihua-cn.com.mysql.jdbc.Driver");

而 MySQL 8.0 以上版本的驱动类路径发生了变化,加载代码为:

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

这行代码的作用是将驱动类加载到 JVM 中,告诉 Java 程序使用哪个驱动来连接数据库。需要注意的是,这行代码可能会抛出ClassNotFoundException,必须进行异常处理(使用 try-catch 块)。

2. 建立数据库连接

加载驱动后,需要通过DriverManager.getConnection()方法建立连接,该方法需要三个参数:数据库 URL、用户名和密码。

数据库 URL 格式:MySQL 的 URL 格式为jdbc:mysql://主机名:端口号/数据库名?参数。例如连接本地的testdb数据库,MySQL 8.0 以上的 URL 为:

String url = "jdbc:mysql://aca.jdshzz.com:3306/testdb?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true";

其中useSSL=false表示不使用 SSL 连接(开发环境推荐关闭),serverTimezone=Asia/Shanghai设置时区为上海时区(避免时区错误),这两个参数是新手最容易忽略的,也是导致连接失败的常见原因。

用户名和密码:即登录 MySQL 的用户名(通常为 root)和密码,与你在命令行登录时使用的凭据一致。

建立连接的完整代码如下:

String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=Asia/Shanghai";

String username = "root";

String password = "你的数据库密码";

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

3. 执行 SQL 语句

连接建立后,就可以通过Statement或PreparedStatement对象执行 SQL 语句了。PreparedStatement比Statement更安全,能防止 SQL 注入,推荐优先使用。例如查询user表中的所有数据:

PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM user");

ResultSet rs = pstmt.executeQuery(); // 执行查询语句,返回结果集

如果是插入、更新或删除操作,则使用executeUpdate()方法:

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO user(username, age) VALUES(?, ?)");

pstmt.setString(1, "王五"); // 给第一个占位符赋值

pstmt.setInt(2, 25); // 给第二个占位符赋值

int rows = pstmt.executeUpdate(); // 执行更新语句,返回受影响的行数

4. 处理查询结果

对于查询操作,执行后会返回ResultSet结果集,需要通过循环遍历结果集中的数据:

while (rs.next()) {

int id = rs.getInt("id");

String name = rs.getString("username");

int age = rs.getInt("age");

System.out.println("ID: " + id + ", 姓名: " + name + ", 年龄: " + age);

}

5. 关闭资源

数据库连接、Statement 和 ResultSet 都是稀缺资源,使用完毕后必须关闭,否则会导致资源泄露,影响程序性能。关闭顺序与创建顺序相反:

if (rs != null) rs.close();

if (pstmt != null) pstmt.close();

if (conn != null) conn.close();

三、完整实战案例:Java 连接 MySQL 实现增删改查

下面通过一个完整的示例,展示如何用 Java 连接 MySQL 数据库并实现基本的增删改查操作。这个案例包含了所有核心步骤,新手可以直接复制代码,替换成自己的数据库信息后运行。

1. 项目结构

在 IntelliJ IDEA 中创建一个 Java 项目,结构如下:

JavaDBTest/

├─ lib/

│ └─ mysql-connector-java-8.0.30.jar

└─ src/

└─ Main.java

2. 完整代码

import java.sql.*;

public class Main {

// 数据库连接参数

private static final String URL = "jdbc:mysql://ace.jieweipuhui.com:3306/testdb?useSSL=false&serverTimezone=Asia/Shanghai";

private static final String USER = "root";

private static final String PASSWORD = "你的数据库密码";

public static void main(String[] args) {

Connection conn = null;

PreparedStatement pstmt = null;

ResultSet rs = null;

try {

// 1. 加载驱动

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

// 2. 建立连接

conn = DriverManager.getConnection(URL, USER, PASSWORD);

System.out.println("数据库连接成功!");

// 3. 执行查询操作

System.out.println("\n查询所有用户:");

pstmt = conn.prepareStatement("SELECT * FROM user");

rs = pstmt.executeQuery();

while (rs.next()) {

int id = rs.getInt("id");

String username = rs.getString("username");

int age = rs.getInt("age");

System.out.println("ID: " + id + ", 姓名: " + username + ", 年龄: " + age);

}

// 4. 执行插入操作

pstmt = conn.prepareStatement("INSERT INTO user(username, age) VALUES(?, ?)");

pstmt.setString(1, "王五");

pstmt.setInt(2, 25);

int rows = pstmt.executeUpdate();

System.out.println("\n插入成功,影响行数:" + rows);

// 5. 再次查询验证插入结果

pstmt = conn.prepareStatement("SELECT * FROM user");

rs = pstmt.executeQuery();

System.out.println("\n插入后所有用户:");

while (rs.next()) {

System.out.println("ID: " + rs.getInt("id") + ", 姓名: " + rs.getString("username") + ", 年龄: " + rs.getInt("age"));

}

} catch (ClassNotFoundException e) {

System.out.println("驱动加载失败:" + e.getMessage());

} catch (SQLException e) {

System.out.println("数据库操作失败:" + e.getMessage());

} finally {

// 6. 关闭资源

try {

if (rs != null) rs.close();

if (pstmt != null) pstmt.close();

if (conn != null) conn.close();

System.out.println("\n资源已关闭");

} catch (SQLException e) {

System.out.println("关闭资源失败:" + e.getMessage());

}

}

}

}

3. 运行结果

如果代码和配置都正确,运行程序后会在控制台输出:

数据库连接成功!

查询所有用户:

ID: 1, 姓名: 张三, 年龄: 20

ID: 2, 姓名: 李四, 年龄: 22

插入成功,影响行数:1

插入后所有用户:

ID: 1, 姓名: 张三, 年龄: 20

ID: 2, 姓名: 李四, 年龄: 22

ID: 3, 姓名: 王五, 年龄: 25

资源已关闭

四、使用工具简化连接:IDEA 数据库插件与连接池

对于实际开发,手动编写连接代码效率较低,还可能存在性能问题。推荐使用 IDEA 的数据库插件和连接池技术,既能简化操作,又能提升程序性能。

1. IDEA 自带数据库工具:可视化操作更便捷

IntelliJ IDEA 内置了强大的数据库工具,无需编写代码就能测试连接和执行 SQL。点击 IDEA 右侧的 “Database” 面板,点击 “+” 号选择 “MySQL”,填写主机名、端口、数据库名、用户名和密码,点击 “Test Connection” 测试连接,成功后即可在 IDE 中直接操作数据库,还能自动生成连接代码。

2. 连接池技术:提升性能的必备方案

在实际项目中,频繁创建和关闭数据库连接会消耗大量资源,连接池技术通过预先创建一定数量的连接并复用,大幅提升性能。常用的连接池有 HikariCP、C3P0 等,其中 HikariCP 以高性能著称,是 Spring Boot 的默认连接池。

使用 HikariCP 的步骤:

在项目中添加 HikariCP 依赖(Maven 项目在 pom.xml 中添加):

ach.qchbrg.com .zaxxer

HikariCP

5.0.1

配置连接池参数并获取连接:

HikariConfig config = new HikariConfig();

config.setJdbcUrl(URL);

config.setUsername(USER);

config.setPassword(PASSWORD);

config.setMaximumPoolSize(10); // 最大连接数

HikariDataSource dataSource = new HikariDataSource(config);

Connection conn = dataSource.getConnection(); // 从连接池获取连接

五、常见错误及解决办法

新手在连接数据库时,经常会遇到各种报错,不要慌张,这些错误大多有固定的解决方法。以下是几种常见错误的分析和解决办法:

1. 驱动类找不到(ClassNotFoundException)

错误提示:java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

原因:未添加 JDBC 驱动或驱动路径不正确。

解决:检查项目的 lib 目录下是否有驱动 JAR 包,是否已添加到类路径(在 IDEA 中执行 “Add as Library”)。

2. 连接 URL 错误(SQLNonTransientConnectionException)

错误提示:Could not create connection to database server.

常见原因:URL 中的主机名、端口号错误,或缺少时区参数。

解决:确认 MySQL 服务的主机和端口是否正确(默认端口 3306),MySQL 8.0 以上 URL 必须添加serverTimezone=Asia/Shanghai参数。

3. 用户名或密码错误(Access denied)

错误提示:Access denied for user 'root'@'localhost' (using password: YES)

原因:用户名或密码不正确,或用户没有访问数据库的权限。

解决:核实用户名和密码是否正确,通过GRANT ALL PRIVILEGES ON testdb.* TO 'root'@'localhost';给用户授权。

4. SSL 连接错误(SSLHandshakeException)

错误提示:SSL connection is required

原因:MySQL 5.7 以上默认要求 SSL 连接,而开发环境未配置 SSL。

解决:在 URL 中添加useSSL=false参数关闭 SSL 连接。

5. 时区错误(DateTimeException)

错误提示:The server time zone value 'XXX' is unrecognized

原因:数据库时区与 Java 程序时区不一致。

解决:在 URL 中添加serverTimezone=Asia/Shanghai指定上海时区。

六、学习资源推荐

想要深入掌握 Java 数据库连接,光靠一篇教程还不够,推荐以下学习资源:

视频课程:B 站 “尚硅谷 JavaWeb 教程” 中的 JDBC 部分,详细讲解了 JDBC 的核心概念和实战案例。

书籍:《Java 编程思想》(第 4 版)中的 I/O 和数据库章节,《JDBC 实战》(适合进阶)。

文档:MySQL 官方 JDBC 文档,Oracle 官方的JDBC 教程。

实战项目:尝试开发一个简单的学生管理系统,实现添加、查询、修改、删除学生信息的功能,巩固数据库连接技能。

结语

Java 连接数据库是后端开发的基础,掌握这一技能后,你就能实现数据的持久化存储,开发出功能完善的应用程序。从准备环境、编写基础连接代码,到使用连接池提升性能,每一步都需要动手实践才能真正掌握。遇到错误时,仔细查看报错信息,对照本文的解决办法排查问题,培养独立解决问题的能力。随着实践的深入,你会发现数据库连接并不复杂,甚至能从中感受到数据交互的乐趣。现在就动手试试,用 Java 连接你的第一个数据库吧!

电影中国十大特种兵排名(国内十大特种部队电影)
骟猪技术方法
最新文章