利用本机上的数据库工具可以链接,但是在java代码里却无法创造链接,jar包也都有,数据库的用户名密码也都对,可是还是提示标题的错误。
原因是 mysql-connector-java.jar 的版本太旧了,需要去maven中央仓库下一个最新版的就行了。
不过链接的驱动类不再是 com.mysql.jdbc.Driver
变成了 com.mysql.cj.jdbc.Driver
假如还有这样的情况:
MYSQL使用的是5.7版本,而JDBC使用的最新的8.0.8版本,启动的时候会提示两个错误:
1.关闭ssL认证。
2.时区信息不可识别。
完整的可链接的java代码如下:
import java.sql.*;
public class ConnectionTest {
private static Connection con = null;
public static Connection abrirBanco(){
Connection con;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8", "root", "123456");
System.out.println("conectando");
return con;
}
catch(ClassNotFoundException cnfe){
System.out.println("driver nao encontrado: " + cnfe.getMessage());
return null;
}
catch(SQLException sql){
System.out.println("SQLException: " + sql.getMessage());
System.out.println("SQLState: " + sql.getSQLState());
System.out.println("Erro: " + sql.getErrorCode());
System.out.println("StackTrace: " + sql.getStackTrace());
return null;
}
catch(Exception e){
System.out.println(e.getMessage());
return null;
}
}
public static void fecharBDcon(){
try{
con.close();
}
catch(Exception e){
System.out.println("erro ao fechar o banco" + e.getMessage());
}
}
public static void main(String arr[])
{
System.out.println("Making connection..");
Connection connection = ConnectionTest.abrirBanco();
System.out.println(connection == null);
System.out.println("Connection made...");
}
}
本文介绍了解决Java应用程序中MySQL数据库连接失败的问题。通过更新mysql-connector-java.jar版本,并更改驱动类为com.mysql.cj.jdbc.Driver,成功实现了数据库的连接。同时,针对MySQL 5.7和JDBC 8.0.8版本兼容性问题,提供了关闭SSL认证及设置正确的时区信息的方法。

9959

被折叠的 条评论
为什么被折叠?



