You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何IntelliJ Ultimate安装的JDBC驱动无法在代码中生效,需单独导入依赖?

问题

我通过学校获得了IntelliJ Ultimate授权,IDE的Database界面可以轻松安装数据库驱动,但代码里引用com.mysql.cj.jdbc.Driver时IDE找不到这个类,目前只能手动导入同款JAR包作为项目依赖,原本以为这些操作应该自动完成。

以下是测试代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCTest {

    public static void main(String[] args) throws Exception {

        if (args.length != 2) {
            System.out.println("Usage: java JDBCTest <user> <password>");
            System.exit(0);
        }

        String user = args[0]; // 用户名
        String pwd = args[1]; // 密码 
        System.out.println(user + ", *********");
        String database = "Company"; // 指定数据库名称
        String server
                = "jdbc:mysql://localhost:3306/" + database
                + "?UseClientEnc=UTF8";

        Connection con = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            con = DriverManager.getConnection(server, user, pwd);
            System.out.println("Connected!");

            executeQuery(con, "SELECT * FROM T_Employee");
        } finally {
            try {
                if (con != null) {
                    con.close();
                    System.out.println("Connection closed.");
                }
            } catch (SQLException e) {
            }
        }
    }

    public static void executeQuery(Connection con, String query) throws SQLException {

        try (Statement stmt = con.createStatement()) {
            // 执行SQL语句
            ResultSet rs = stmt.executeQuery(query);

            // 获取字段名称
            ResultSetMetaData metaData = rs.getMetaData();
            int ccount = metaData.getColumnCount();
            for (int c = 1; c <= ccount; c++) {
                System.out.print(metaData.getColumnName(c) + "\t");
            }
            System.out.println();

            // 获取字段值
            while (rs.next()) {
                // 注意:这只是示例,并非推荐的数据获取方式。
                // 应使用返回特定数据类型的方法,如rs.getInt()、rs.getString()等。
                // 建议将每条记录存储在自定义类型(如Employee)的对象中。
                for (int c = 1; c <= ccount; c++) {
                    System.out.print(rs.getObject(c) + "\t");
                }
                System.out.println();
            }

        }
    }
}
解决方案
  • IntelliJ的Database界面安装的驱动仅用于IDE自身的数据库连接功能(比如可视化查看数据、执行SQL),不会自动添加到项目的类路径中,这就是代码找不到驱动类的核心原因。
  • 若想让IDE自动管理依赖,推荐使用Maven或Gradle这类构建工具:
    • Maven:在项目的pom.xml中添加MySQL驱动依赖
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.33</version> <!-- 替换为你需要的版本 -->
      </dependency>
      
    • Gradle:在项目的build.gradle中添加依赖
      dependencies {
          implementation 'mysql:mysql-connector-java:8.0.33'
      }
      
  • 如果不想用构建工具,也可以手动将驱动添加到项目依赖:
    1. 打开File > Project Structure(快捷键Ctrl+Alt+Shift+S)
    2. 选择Modules > Dependencies选项卡
    3. 点击界面右侧的+号,选择JARs or directories
    4. 找到Database界面安装的驱动JAR(通常路径为~/.IntelliJIdea<版本号>/config/drivers/MySQL),选中后添加即可

内容的提问来源于stack exchange,提问作者Zethraxxur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:16:08