1. 程式人生 > >java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO) 出現原因和解決辦法

java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO) 出現原因和解決辦法

    今天我在複習mysql資料庫中,寫JDBC測試程式碼的時候,在使用Junit測試執行程式的時候,遇到了這個錯誤:java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO) ,從該報錯的字面意思就可以知道是沒有使用資料可密碼,但是我在資料可的properties檔案中,寫了資料庫密碼了呀。怎麼會報這種錯誤呢,經過多番排查終於找到了錯誤,由於我的粗心大意,在使用DriverManager.getConnection(url,user,password) 獲得資料庫連線的過程中,我錯將getConnetion()方法的三個引數寫成了一個,寫成:DriverManager.getConnection(url); 這樣,因此報如上錯誤。

解決過程如下:

解決辦法:正確使用getConnection()這個方法就可以了

解決完了這個問題,我抱著能成功的態度,又運行了一下,尷尬的是,又換了另一種錯誤,錯誤為:java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES) 這種錯誤和上一種錯誤,區別就在於,一個使用了資料庫密碼,一個沒有,很想然我們剛剛遇到的錯誤解決了,我重新看一下程式碼,發現有些變數對應問題寫錯了。因為在資料中配置檔案中的變數和我在Java程式中載入完畢資料庫配置檔案後,獲取資料庫配置檔案中的變數不一致。

解決步驟如下:

在db.properties檔案中的變數對應為:

解決辦法:將錯誤程式碼改為  user = properties.getProperty("username");  即可解決。再次執行即可獲得資料庫連線物件

執行結果: