JDBC vs. JDBC Driver
在开始之前,必须理解两个关键概念:

-
JDBC (Java Database Connectivity): 这是 Java 提供的一套标准 API(应用程序接口),定义了如何连接数据库、执行 SQL 语句、获取结果等操作,它位于
java.sql和javax.sql包中,是 Java 标准库的一部分,你不需要额外下载任何 JAR 包。- 好比是汽车的“说明书”和“操作规范”。
-
JDBC Driver (JDBC 驱动): 这是数据库厂商(如 Oracle/Mysql)提供的具体实现类,它实现了 JDBC API 中定义的接口,使得 Java 程序能够与特定品牌的数据库(如 MySQL)进行通信,这个实现就是以 JAR 包的形式提供的。
- 好比是汽车的“发动机”和“变速箱”,它让“说明书”上的规范能够真正驱动汽车。
你的 Java 代码需要调用 JDBC API(java.sql),而 JDBC API 的具体功能需要通过 JDBC Driver(MySQL 的 JAR 包)来实现。
如何获取 MySQL JDBC Driver JAR 包
MySQL 官方推荐的驱动是 mysql-connector-j,获取它的方式主要有以下几种:

直接下载(适用于传统项目)
这是最直接的方式,适合没有使用构建工具(如 Maven/Gradle)的项目。
-
访问 Maven 中央仓库:
- Maven 是目前最流行的 Java 项目依赖管理仓库,所有主流的开源库都会发布在这里。
- 访问地址:https://mvnrepository.com/
-
搜索驱动:
- 在搜索框中输入
mysql-connector-j或mysql java driver。
- 在搜索框中输入
-
选择版本并下载:
(图片来源网络,侵删)- 找到由
Oracle发布的mysql-connector-j。 - 选择一个较新的稳定版本(8.0.x 或 8.4.x)。
- 在 "Files" 部分,你会看到一个名为
mysql-connector-j-x.x.xx.jar的文件,点击下载即可。
- 找到由
使用 Maven(强烈推荐)
如果你的项目使用 Maven 进行构建管理,这是最简单、最规范的方式。
-
在你的
pom.xml文件中,添加以下依赖:<dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.0.33</version> <!-- 建议使用最新稳定版 --> </dependency> -
保存
pom.xml文件后,你的 IDE(如 IntelliJ IDEA 或 Eclipse)会自动下载这个 JAR 包并将其添加到项目的 Classpath 中,你也可以在命令行中运行mvn install来手动下载。
使用 Gradle
如果你的项目使用 Gradle,在 build.gradle 或 build.gradle.kts 文件中添加依赖:
Groovy DSL (build.gradle):
implementation 'com.mysql:mysql-connector-j:8.0.33'
Kotlin DSL (build.gradle.kts):
implementation("com.mysql:mysql-connector-j:8.0.33")
保存文件后,Gradle 会自动下载依赖。
如何在项目中使用 JAR 包
下载到 JAR 包后,需要确保它被你的 Java 项目“识别”到,也就是添加到 Classpath 中。
传统方式(手动添加)
- 将下载的
mysql-connector-j-x.x.xx.jar文件复制到你的项目目录下(一个名为lib的文件夹)。 - 在你的 IDE 中:
- IntelliJ IDEA: 右键点击 JAR 文件 -> "Add as Library..." -> 选择模块并确定。
- Eclipse: 右键点击你的项目 -> "Build Path" -> "Configure Build Path..." -> "Libraries" 选项卡 -> "Add External JARs..." -> 选择你下载的文件。
命令行方式(手动编译运行)
如果你使用 javac 和 java 命令手动编译和运行,需要在命令中指定 Classpath。
-
编译时:
javac -cp ".;path/to/your/mysql-connector-j-x.x.xx.jar" YourJavaFile.java
-cp是classpath的缩写。- 表示当前目录。
- (Windows) 或 (Linux/macOS) 是路径分隔符。
path/to/your/...是 JAR 包的完整路径。
-
运行时:
java -cp ".;path/to/your/mysql-connector-j-x.x.xx.jar" YourJavaFile
连接代码示例
这里提供一个完整的 Java 连接 MySQL 的示例代码。
准备工作
- 确保你已经安装并启动了 MySQL 数据库服务。
- 在 MySQL 中创建一个数据库和用户,并授予相应权限。
CREATE DATABASE mytestdb; CREATE USER 'javauser'@'localhost' IDENTIFIED BY 'password123'; GRANT ALL PRIVILEGES ON mytestdb.* TO 'javauser'@'localhost'; FLUSH PRIVILEGES;
Java 代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
public class MysqlJdbcExample {
// 数据库连接信息
// 注意:如果使用旧版驱动 (5.x.x),URL格式为 "jdbc:mysql://host:port/dbname"
// 如果使用新版驱动 (8.x.x),建议增加时区信息以避免警告
private static final String DB_URL = "jdbc:mysql://localhost:3306/mytestdb?useSSL=false&serverTimezone=UTC";
private static final String USER = "javauser";
private static final String PASS = "password123";
public static void main(String[] args) {
// try-with-resources 语句,可以自动关闭资源,防止内存泄漏
try (Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT 'Hello, MySQL!' as message")) {
// 检查连接是否成功
if (conn != null) {
System.out.println("连接到 MySQL 数据库成功!");
}
// 处理结果集
while (rs.next()) {
// 通过列名获取数据
String message = rs.getString("message");
System.out.println("查询结果: " + message);
}
} catch (SQLException e) {
System.err.println("数据库连接或查询失败!");
e.printStackTrace();
}
}
}
版本选择与兼容性
-
MySQL Connector/J 8.x:
- 目标: 支持 MySQL 服务器 5.6, 5.7, 8.0。
- JDBC 版本: 支持 JDBC 4.2 (Java 8+)。
- 认证: 默认使用新的
caching_sha2_password认证插件,如果你的 MySQL 用户是旧版mysql_native_password,可能会遇到连接错误,解决方案是在连接 URL 中添加?useSSL=false&allowPublicKeyRetrieval=true或修改用户认证方式。 - 这是目前推荐使用的版本。
-
MySQL Connector/J 5.1:
- 目标: 支持 MySQL 服务器 4.1, 5.0, 5.1, 5.5, 5.6。
- JDBC 版本: 支持 JDBC 4.0 (Java 6+)。
- 状态: 已过时,不再维护,不推荐在新项目中使用。
| 步骤 | 描述 | 推荐方式 |
|---|---|---|
| 获取 JAR | 下载 MySQL 数据库的 Java 驱动包。 | 使用 Maven 或 Gradle 管理依赖。 |
| 添加依赖 | 将 JAR 包添加到项目的 Classpath 中。 | IDE 自动集成(Maven/Gradle)或手动添加 Library。 |
| 编写代码 | 使用 JDBC API 加载驱动、建立连接、执行 SQL。 | 使用 try-with-resources 确保 Connection, Statement, ResultSet 正确关闭。 |
| 运行测试 | 运行 Java 程序,验证是否能成功连接数据库。 | 检查控制台输出和可能的异常信息。 |
希望这份详细的指南能帮助你顺利地在 Java 项目中使用 MySQL!
