2 回答
TA贡献1780条经验 获得超5个赞
“com.mysql.jdbc.Driver”而不是“com.mysql.cj.jdbc.Driver”,但它似乎无关紧要。
这很可能是相关的。但是根据您的报告,这不是完整的解决方案。
真正的问题是以下一项或两项:
包含 JDBC 驱动程序的 JAR 文件可能不在类路径中。
您可能为 JDBC 驱动程序使用了错误的类名:
对于旧版本的 MySQL 连接器/J 驱动程序,名称是
com.mysql.jdbc.Driver.对于较新的版本,它是
com.mysql.cj.jdbc.Driver更改发生在 8.0 版本中。
我还想指出,您的很多问题都归因于一些实施错误:
你不应该赶上
Exception。只捕获您知道如何处理的异常。您通常不应
printStackTrace()在异常处理程序中使用。应记录异常。分散调用打印堆栈跟踪使得维护生产代码变得更加困难。您不应将方法声明为
throws Exception. 这意味着调用者必须能够处理所有异常,并且不知道会发生什么。null如果出现错误,返回通常不是一个好主意。要么让异常传播到可以有效处理的地方,要么将其包装在不同的异常中并抛出它。
目前发生的情况是getConnection方法中的任何错误都会导致它返回null。并且调用的代码getConnnection没有正确处理这个......导致NullPointerException. 所以你有一个问题,你现在有两个。
最后,如果你仔细查看你的代码,你会发现有一个错误导致它总是返回null。即使没有例外。
TA贡献1859条经验 获得超6个赞
您需要在 try 块中返回连接。
public static Connection getConnection() throws Exception {
try{
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sys?useUnicode=true&usetetimeCode=false&serverTimezone=Germany","root","pass");
Statement st = con.createStatement();
return con;
}
catch(Exception ex){
System.out.println("Error: " + ex);
}
return null;
}
添加回答
举报
