安装驱动后无法解决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 中,然后重试。
我是 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 中,然后重试。