即使在安装驱动程序后,也无法解决java.sql.SQLException

即使在安装驱动程序后,也无法解决java.sql.SQLException,java,mysql,jdbc,Java,Mysql,Jdbc,我是JDBC的初学者,我想连接到本地机器上的MySQL实例。下面是我正在尝试连接的MySQL实例。它存在于我的本地机器上。它有一个名为my_db2的数据库。我想和它的桌子一起工作 为了连接到上述数据库,我编写了以下代码 import java.sql.*; public class TestMySQL { public static void main(String[] args) { try( Connection connection

我是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连接器驱动程序,但我一直收到这个错误。我也尝试显式加载驱动程序,如下所示:

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 Rotterveel所说,如果您得到一个ClassNotFoundException,那么驱动程序可能不会加载到您的运行时类路径中。您可以将依赖项语句
compile(“mysql:mysql-connector-java:8.0.23”)
添加到build.gradle中,然后重试。

自2006年以来,java 6和兼容JDBC 4.0的驱动程序都不需要这样做,虽然这是一个很好的解决驱动程序是否在类路径上的问题的方法。我确实加载了驱动程序,它向我抛出了一个ClassNotFoundException,即使库存在于项目结构和依赖项部分中。我不知道为什么,但看起来驱动程序没有加载到类路径中。由于使用了gradle,您可以删除自己的adding,只需将语句
compile(“mysql:mysql-connector-java:8.0.23”)
添加到build.gradle中,然后重新导入依赖项。再试一次,我想没问题@海森堡737@刘维兵 非常感谢你!我在build.gradle文件中写了这个声明,瞧!我的连接立即开始工作。如果您更新您的答案以反映这一变化,那就更好了。再次感谢@海森堡737祝贺你。。。我将更新答案。如果您得到一个
ClassNotFoundException
,则您的运行时类路径上没有驱动程序。@MarkRotVeel我已在项目结构的模块->依赖项部分添加了驱动程序。我在依赖项部分的“范围”标题下看到一个小下拉列表。我应该把它改为“运行时”而不是“编译”吗?这就是您所指的吗?这取决于您实际运行应用程序的方式,以及驱动程序当时是否在类路径上。@markrottveel我只是想做我在上面代码中写的事情。没有别的了。正如我已经提到的,我是这方面的初学者。那么,如果我只想执行上面代码中写的内容,我该怎么办?@markrotterveel还有,看看我的项目结构的屏幕截图,你认为我没有加载驱动程序吗?我对此也感到困惑,因为根据我的阅读,这是向类路径添加驱动程序的唯一方法。