1 回答

TA貢獻1824條經(jīng)驗 獲得超8個贊
問題是你的類被調(diào)用Connection
,而DriverManager.getConnection()
返回一個java.sql.Connection
. 當(dāng)使用 MySQL Connector/J 時,實際返回的實現(xiàn)是com.mysql.cj.jdbc.ConnectionImpl
,這顯然不是您的類的實例com.hrms.employees.db.Connection
,因此轉(zhuǎn)換失敗。
您要么需要重命名您的類,要么需要將變量定義為private static java.sql.Connection conn
并刪除強制轉(zhuǎn)換(因此使用conn = DriverManager.getConnection
)。
順便說一句,對數(shù)據(jù)庫連接使用靜態(tài)變量幾乎總是錯誤的解決方案,在長時間運行的應(yīng)用程序中,當(dāng)連接關(guān)閉或丟失時,它可能會導(dǎo)致問題,而在高度并發(fā)的應(yīng)用程序中,這會導(dǎo)致在多個線程之間共享單個連接這可能會導(dǎo)致競爭條件或其他難以診斷的錯誤。
更好的解決方案是使用連接池數(shù)據(jù)源,例如 Apache DBCP、c3p0 或 HikariCP,并僅為一個工作單元獲取連接,然后將其關(guān)閉(這會將其返回到池中以供重用)。
添加回答
舉報