杰瑞科技汇

Java连接MySQL需哪个jar包?

  1. 旧版 (已不推荐): mysql-connector-java-5.x.x.jar (基于 Type 4 JDBC 驱动)
  2. 新版 (当前推荐): mysql-connector-j-8.x.x.jar (基于 Type 4 JDBC 驱动,是官方驱动的新命名)
  3. 最现代的方式: 使用构建工具(Maven/Gradle)自动管理依赖,无需手动下载和配置JAR包。

驱动名称的演变:mysql-connector-java vs mysql-connector-j

你可能会在网上看到两种名字,它们其实指向的是同一个东西,只是版本不同。

Java连接MySQL需哪个jar包?-图1
(图片来源网络,侵删)
  • mysql-connector-java:

    • 这是过去驱动包的名称,版本从 5.x.x 开始。
    • 当你使用旧版 MySQL (如 5.7) 或 Java 8 时,这个驱动是首选。
    • 注意:这个名称在 Maven 仓库中已被弃用。
  • mysql-connector-j:

    • 这是从 MySQL 8.0 版本开始,官方推荐的驱动名称。
    • 它是 mysql-connector-java 的继承者,修复了旧版本的问题,并支持 MySQL 8.0 的新特性(如新的认证插件)。
    • 这是目前你应该使用的驱动,即使你连接的是 MySQL 5.7 或 5.6 版本的服务器,使用 mysql-connector-j 也是完全兼容且推荐的。

忘记 mysql-connector-java,直接寻找和使用 mysql-connector-j


如何获取 JAR 包

获取JAR包主要有两种方式:手动下载通过构建工具自动管理

Java连接MySQL需哪个jar包?-图2
(图片来源网络,侵删)

手动下载 (适用于不使用构建工具的简单项目)

这是最传统的方式,适合初学者或小型项目。

  1. 访问官网

  2. 选择版本和平台

    • Product Version: 选择 "Generally Available (GA) Releases"(最新稳定版)即可。
    • Operating System: 选择 "Platform Independent"。
    • Architecture: 选择 "Architecture Independent"。
  3. 下载

    Java连接MySQL需哪个jar包?-图3
    (图片来源网络,侵删)
    • 你会看到两个下载选项:
      • ZIP Archive (mysql-connector-j-x.x.x.zip): 推荐下载这个,它包含了JAR文件、文档和一些示例代码。
      • TAR Archive (mysql-connector-j-x.x.x.tar.gz): Linux/Unix 用户使用。
  4. 解压并找到 JAR 文件

    • 解压下载的 ZIP 文件。
    • mysql-connector-j-x.x.x 文件夹中,你会找到一个名为 mysql-connector-j-x.x.x.jar 的文件,这就是你需要的JAR包。
  5. 在项目中配置

    • IDE (如 IntelliJ IDEA, Eclipse):

      • 右键你的项目 -> Build Path / Project Structure -> Libraries / Modules。
      • 点击 "Add External JARs..." 或类似按钮,然后选择你刚刚下载的 mysql-connector-j-x.x.x.jar 文件。
    • 命令行编译:

      • 你需要使用 -cp (classpath) 参数来指定JAR包的位置。
        # 编译 Java 文件
        javac -cp ".;C:\path\to\your\mysql-connector-j-8.0.xx.jar" YourJavaFile.java

      运行 class 文件

      java -cp ".;C:\path\to\your\mysql-connector-j-8.0.xx.jar" YourJavaFile

      
      *注意*: Windows 上路径分隔符是 `;`,Linux/Mac 上是 `:`。

使用构建工具 (Maven / Gradle) - 强烈推荐

这是现代Java开发的标准做法,你不需要手动下载任何东西,构建工具会自动帮你下载并管理所有依赖。

Maven 示例

在你的 pom.xml 文件中,添加以下依赖:

<dependencies>
    <!-- MySQL Connector/J -->
    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.0.33</version> <!-- 建议使用最新的稳定版本 -->
    </dependency>
</dependencies>
  • groupId: com.mysql
  • artifactId: mysql-connector-j
  • version: 你想使用的版本号。

保存 pom.xml 文件后,IDE(如IntelliJ IDEA或Eclipse)会自动检测到变化并下载依赖,你也可以在命令行运行 mvn clean install 来下载。

Gradle 示例

在你的 build.gradle (或 build.gradle.kts) 文件中,添加以下依赖:

// build.gradle
dependencies {
    // MySQL Connector/J
    implementation 'com.mysql:mysql-connector-j:8.0.33' // 建议使用最新的稳定版本
}
// build.gradle.kts
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
    // ...
    kotlin("jvm") version "1.8.21"
}
dependencies {
    // MySQL Connector/J
    implementation("com.mysql:mysql-connector-j:8.0.33") // 建议使用最新的稳定版本
}

保存文件后,IDE或Gradle命令(gradle build)会自动处理依赖下载。


连接代码示例

无论你用哪种方式获取JAR包,连接数据库的Java代码都是一样的。

关键点:URL 字符串的格式

JDBC URL 的格式至关重要,特别是对于 MySQL 8.0。

通用格式: jdbc:mysql://[主机名]:[端口]/[数据库名]?[属性]

  • 主机名: MySQL 服务器的地址,如 localhost0.0.1
  • 端口: MySQL 的默认端口是 3306
  • 数据库名: 你要连接的数据库的名称。
  • 属性: 用于配置连接的参数。

MySQL 8.0+ 的重要变化: 从 MySQL 8.0 开始,默认的认证插件从 mysql_native_password 改为了 caching_sha2_password,如果你的 JDBC 驱动版本过低(比如还在用 5.x),或者没有正确配置,可能会遇到 Authentication plugin 'caching_sha2_password' reported error 的错误。

解决方法是在 URL 中添加 useSSL=falseallowPublicKeyRetrieval=true 属性。

代码示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MySQLConnectionExample {
    // 数据库连接信息
    // 请根据你的实际情况修改这些值
    private static final String DB_URL = "jdbc:mysql://localhost:3306/your_database_name?useSSL=false&allowPublicKeyRetrieval=true";
    private static final String USER = "your_username";
    private static final String PASS = "your_password";
    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!'")) {
            // 检查连接是否成功
            if (conn != null) {
                System.out.println("连接到 MySQL 数据库成功!");
            }
            // 处理查询结果
            while (rs.next()) {
                // 假设查询返回一个字符串列
                String message = rs.getString(1);
                System.out.println("查询结果: " + message);
            }
        } catch (SQLException e) {
            System.err.println("连接数据库失败!");
            e.printStackTrace();
        }
    }
}

总结与最佳实践

项目 推荐做法 原因
JAR 包名称 mysql-connector-j 官方当前标准,支持最新特性。
获取方式 Maven / Gradle 自动管理依赖,避免版本冲突,简化项目配置。
连接 URL jdbc:mysql://host:port/db?useSSL=false&allowPublicKeyRetrieval=true 兼容 MySQL 8.0 的新认证机制,简化本地开发配置。
代码编写 使用 try-with-resources 自动关闭 Connection, Statement, ResultSet,防止资源泄漏。

对于任何新的Java项目,请务必采用 Maven/Gradle + mysql-connector-j 的组合,这是最稳定、最现代、最省心的方案。

分享:
扫描分享到社交APP
上一篇
下一篇