利用本机上的数据库工具可以链接,但是在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...");
}
}