1. ホーム
  2. マイスル

データベースサーバーへの接続を作成できない - java mysql connector

2022-02-28 18:25:11
<パス

私のマシンのデータベースツールを使ってリンクすることはできますが、javaコードでリンクを作成することができません。jarパッケージはすべて揃っており、データベースのユーザー名とパスワードも正しいのですが、まだタイトルのエラーが表示されます。
その理由は mysql-connector-java.jar。 のバージョンが古すぎるため、maven centralリポジトリに移動して最新版をダウンロードする必要があります。

しかし、リンク先のドライバクラスは、もはや com.mysql.jdbc.Driver
になる com.mysql.cj.jdbc.Driver

というケースもあるとします。
MYSQLがバージョン5.7、JDBCが最新バージョン8.0.8を使用している場合、起動時に2つのエラーが表示されます。
1. ssl認証をOFFにする。
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... ");
    }
}