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); 这样,因此报如上错误。

解决过程如下:

java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO) 出现原因和解决办法

 

解决办法:正确使用getConnection()这个方法就可以了

 

解决完了这个问题,我抱着能成功的态度,又运行了一下,尴尬的是,又换了另一种错误,错误为:java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES) 这种错误和上一种错误,区别就在于,一个使用了数据库密码,一个没有,很想然我们刚刚遇到的错误解决了,我重新看一下代码,发现有些变量对应问题写错了。因为在数据中配置文件中的变量和我在Java程序中加载完毕数据库配置文件后,获取数据库配置文件中的变量不一致。

解决步骤如下:

java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO) 出现原因和解决办法

在db.properties文件中的变量对应为:

java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO) 出现原因和解决办法

 

解决办法:将错误代码改为  user = properties.getProperty("username");  即可解决。再次运行即可获得数据库连接对象

运行结果:

java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO) 出现原因和解决办法