【发布时间】:2021-05-25 19:16:50
【问题描述】:
我目前正在使用 VS Code 上的 Java 制作后端报告系统(用于投票系统分配),我正在使用 JDBC 库连接到 MySQL 数据库以进行计算和统计等。所以发生的事情是,一旦我创建了一个项目文件并将 mysql-connector-java-8.0.25.jar 包含在引用的库中,我就可以很好地连接到数据库并从表中检索数据,但是经过几次执行我不再得到输出,它显示错误“java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver”。
谁能告诉我为什么会发生这种情况以及如何解决这个问题?据我所知,环境变量中没有发生任何变化(至少从我在 Windows 路径列表中可以看到的),除非某处被覆盖或者它是某种错误。任何建议都会很有帮助,我一整天都无法解决这个问题
这就是我的 ReportSystem.java 的样子...
import java.sql.*;
public class ReportSystem
{
public static void main(String[] args)
{
//Test driver connection/registration
try
{
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/ElectionDB","<username>","<password>");
Statement stmt = conn.createStatement();
ResultSet result = stmt.executeQuery("SELECT * FROM ElectionDB.Votes");
int typeColumn = 1;
int districtColumn = 2;
//Output results line by line
while(result.next())
{
System.out.println(result.getString(typeColumn));
System.out.println(result.getString(districtColumn));
}
//Remember to close the connection
conn.close();
}
catch (Exception e)
{
System.out.println(e);
}
}
}
我在目录中的文件结构如下:
ReportSystem
>src > ReportSystem.java
> ReportSystem.class
>lib
>.vscode > settings.json
The JRE system library used is: [jdk-16.0.1]
The Referenced Libraries contains: [mysql-connector-java-8.0.25.jar]
【问题讨论】:
-
这个错误看起来很奇怪。
Class.forName可能不是必需的。我会将Connection conn = DriverManager…包装起来尝试使用资源,这样您就可以确定它会关闭。 -
我认为这确实是一个错误,因为当我使用 Eclipse 并将构建路径指向同一个驱动程序时,它似乎可以连续工作
-
Class.forName()行自 2007 年以来就不再需要了。删除它即可。
标签: java mysql visual-studio-code jdbc