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;
}
添加回答
舉報