Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary. 数据库驱动加载成功 java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:130) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:825) at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:446) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:239) at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:188) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:683) at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:230) at Main.getConnection(Main.java:26) at Main.main(Main.java:37) Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.sql.Connection.prepareStatement(String)" because "Main.con" is null at Main.queryData(Main.java:51) at Main.main(Main.java:38) 进程已结束,退出代码1
时间: 2024-04-27 09:21:48 浏览: 22
这段代码中出现了两个问题。第一个是关于数据库驱动的警告,建议使用新的驱动类 `com.mysql.cj.jdbc.Driver`。第二个问题是连接数据库时出现了访问拒绝的错误,可能是因为用户名或密码不正确。需要检查代码中数据库连接的用户名和密码是否正确,并且确保数据库服务已经启动。另外,建议在连接数据库前先进行空指针判断,以避免出现空指针异常。
相关问题
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'.
在提示信息中,显示了"Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'." 这句话表明,使用的数据库驱动`com.mysql.jdbc.Driver'已经被弃用,应该使用新的驱动`com.mysql.cj.jdbc.Driver'。根据提示信息,我们可以知道以前使用的驱动已经过时,建议更新为新的驱动。
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'
这个警告信息是因为使用了过时的 MySQL 驱动程序。新的 MySQL 驱动程序的类名为 `com.mysql.cj.jdbc.Driver`,建议使用新的驱动程序。
以下是使用新的 MySQL 驱动程序连接数据库的示例代码:
```java
import java.sql.*;
public class Main {
public static void main(String[] args) {
try {
// 注册 MySQL 驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");
// 获取与 MySQL 数据库的连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai", "username", "password");
// 执行 SQL 查询
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM mytable");
// 处理查询结果
while (rs.next()) {
// 读取查询结果中的数据
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
// 输出查询结果
System.out.println("id: " + id + ", name: " + name + ", age: " + age);
}
// 关闭连接
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
上述代码中,第 8 行调用了 `Class.forName("com.mysql.cj.jdbc.Driver")` 方法来注册 MySQL 驱动程序,第 11 行调用了 `DriverManager.getConnection` 方法来获取与 MySQL 数据库的连接。需要注意的是,在连接字符串中添加了 `useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai` 参数,以确保中文字符能够正确地显示。在获取到连接之后,就可以使用 `Statement` 对象执行 SQL 查询,并使用 `ResultSet` 对象来处理查询结果了。最后需要记得关闭连接。