安装驱动后无法解决java.sql.SQLException

Unable to solve java.sql.SQLException even after installing the driver

我是 JDBC 的初学者,我想连接到本地计算机上的 MySQL 实例。下面是我尝试连接的 MySQL 实例。它存在于我的本地机器上。它有一个名为 my_db2 的数据库。我想使用它的表格。

为了连接上面的数据库,我写了下面的代码

import java.sql.*;

public class TestMySQL {
    public static void main(String[] args) {

        try(
            Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3308/my_db2","root","B03091999b");
            Statement statement = connection.createStatement();
            ResultSet rs = statement.executeQuery("Select * from department");)
        {
            while(rs.next()){
                System.out.println(rs.getString("DeptName"));
            }

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

我还使用 IntelliJ 添加了 mysql-连接器库。

然而,当我尝试连接到数据库时,我一直收到此错误。

java.sql.SQLException: No suitable driver found for jdbc:mysql://127.0.0.1:3308/my_db2
    at java.sql.DriverManager.getConnection(DriverManager.java:689)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at TestMySQL.main(TestMySQL.java:7)

即使我已经使用 IntelliJ 安装了 mysql-connector 驱动程序,我仍然会收到此错误。我也尝试如下显式加载驱动程序:

import java.sql.*;

public class TestMySQL {
    public static void main(String[] args) {



        try
        {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3308/my_db2","root","B03091999b");
            Statement statement = connection.createStatement();
            ResultSet rs = statement.executeQuery("Select * from department");
            while(rs.next()){
                System.out.println(rs.getString("DeptName"));
            }

        } catch (SQLException | ClassNotFoundException throwables) {
            throwables.printStackTrace();
        }
    }
}

此时,我开始收到以下错误。

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at TestMySQL.main(TestMySQL.java:10)

据我所知,我已正确执行所有步骤,将 mysql-连接器文件添加到库中。我不确定出了什么问题。 请帮我解决这个问题。任何帮助将不胜感激。

您应该先加载驱动程序:

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

更新

正如@Mark Rotteveel 所说,如果您收到 ClassNotFoundException,则驱动程序可能不会加载到您的运行时类路径中。您可以将依赖语句 compile ("mysql:mysql-connector-java:8.0.23") 添加到您的 build.gradle 中,然后重试。