合普知识库
柔彩主题三 · 更轻盈的阅读体验

通过JDBC连接数据库:手把手教你实现Java与数据库通信

发布时间:2025-12-24 20:41:37 阅读:157 次

什么是JDBC

JDBC(Java Database Connectivity)是Java提供的一套用于执行SQL语句的API,它允许Java程序与各种关系型数据进行交互。不管是MySQL、Oracle还是PostgreSQL,只要数据库支持JDBC驱动,就能用统一的方式去操作数据。

比如你在开发一个小型图书管理系统,想把书名、作者存进数据库里,或者从里面查某本书有没有库存,这时候就需要通过JDBC来建立连接并执行操作。

准备工作:加载驱动和引入依赖

在使用JDBC之前,得先确保项目中包含了对应数据库的驱动包。以MySQL为例,如果你用的是Maven项目,在pom.xml中添加如下依赖:

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

如果不是Maven项目,可以直接下载JAR包,加入到项目的类路径中。

连接数据库的基本步骤

连接数据库通常有四个关键步骤:加载驱动、获取连接、执行SQL、关闭资源。下面以MySQL为例演示整个流程。

假设你的数据库名为library,运行在本地3306端口,用户名为root,密码为123456。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnection {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/library?useSSL=false&serverTimezone=UTC";
        String username = "root";
        String password = "123456";

        try {
            // 加载驱动(新版本可省略)
            Class.forName("com.mysql.cj.jdbc.Driver");

            // 获取连接
            Connection conn = DriverManager.getConnection(url, username, password);
            System.out.println("数据库连接成功!");

            // 这里可以执行查询、插入等操作

            // 记得关闭连接
            conn.close();
        } catch (ClassNotFoundException e) {
            System.err.println("驱动未找到:" + e.getMessage());
        } catch (SQLException e) {
            System.err.println("数据库连接失败:" + e.getMessage());
        }
    }
}

注意连接字符串中的参数

上面的URL里加了useSSL=falseserverTimezone=UTC,是因为MySQL 8.x默认启用SSL和严格的时区设置。如果不加上这些,可能会报错或连接不上。根据实际情况调整即可。

使用try-with-resources自动管理资源

每次手动close容易遗漏,推荐用try-with-resources语法,让Java自动关闭连接相关的资源。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class SafeQuery {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/library?useSSL=false&serverTimezone=UTC";
        String username = "root";
        String password = "123456";

        String sql = "SELECT * FROM books WHERE id = ?";

        try (Connection conn = DriverManager.getConnection(url, username, password);
             PreparedStatement pstmt = conn.prepareStatement(sql)) {
            
            pstmt.setInt(1, 101);  // 设置参数
            
            try (ResultSet rs = pstmt.executeQuery()) {
                while (rs.next()) {
                    System.out.println("书名:" + rs.getString("title"));
                    System.out.println("作者:" + rs.getString("author"));
                }
            }
        } catch (SQLException e) {
            System.err.println("操作失败:" + e.getMessage());
        }
    }
}

这种写法更安全,也更简洁,适合日常开发使用。

常见问题排查

连不上数据库?先检查这几项:

  • 数据库服务是否已启动(比如MySQL有没有在运行)
  • 网络是否通(远程数据库要注意防火墙和权限)
  • 用户名密码是否正确
  • 驱动版本是否匹配(例如MySQL 8要用mysql-connector-java 8.x)
  • 连接URL格式是否准确

如果提示“Class not found”,说明驱动没加载进来,确认依赖或JAR包是否正确引入。