Как я могу решить эту Java JDB c Ошибка подключения? - PullRequest
1 голос
/ 27 апреля 2020

Я написал простую Java Jdb c программу подключения. Я поставил банку с разъемом MySQL. Я также поместил classpath в переменную окружения. Все еще не удалось решить эту ошибку соединения.

Это мой код:

public class check {

    public static void main(String[] args) {

        System.out.println("-------- MySQL JDBC Connection Demo ------------");
        try
        {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } 
        catch (ClassNotFoundException e) {
            System.out.println("MySQL JDBC Driver not found !!");
            return;
        }
        System.out.println("MySQL JDBC Driver Registered!");
        Connection connection = null;
        try {
            connection = DriverManager
                .getConnection("jdbc:mysql://localhost:3306/company","root","");
            System.out.println("SQL Connection to database established!");

        } catch (SQLException e) {
            System.out.println("Connection Failed! Check output console");
            return;
        } finally {
            try
            {
                if(connection != null)
                    connection.close();
                System.out.println("Connection closed !!");
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

Вывод:

-------- MySQL JDBC Connection Demo ----------
MySQL JDBC Driver Registered!
Connection Failed! Check output console
Connection closed !!

Ответы [ 4 ]

3 голосов
/ 27 апреля 2020

Замените следующие строки

} catch (SQLException e) {
    System.out.println("Connection Failed! Check output console");
    return;
}

на

} catch (SQLException e) {
    System.out.println("Connection Failed! Check output console");
    e.printStackTrace();
}

, чтобы вы могли выяснить причину проблемы root. Ваш текущий код просто потребляет эту жизненно важную информацию.

В примечании на стороне удалите следующий рудиментарный код:

try
{
    Class.forName("com.mysql.cj.jdbc.Driver");
} 
catch (ClassNotFoundException e) {
    System.out.println("MySQL JDBC Driver not found !!");
    return;
}

Class.forName("com.mysql.cj.jdbc.Driver") не требуется, поскольку JDB C 4.0.

2 голосов
/ 27 апреля 2020

Исключения содержат полезную информацию. Улавливая их и печатая «ошибка!», Вы удаляете эту информацию.

Это не то, как вы обрабатываете исключения. Вот правило: регистрация / показ ошибки не обрабатывает это. Так что не надо.

Просто объявите 'throws Exception' в вашем основном методе и удалите ALLLLL try / catch. Делает код чертовски более читабельным, и теперь вы можете увидеть полную информацию об ошибке.

Если вы ДОЛЖНЫ перехватить эти исключения, то правильный код для блока catch, когда вы на самом деле не знаете что нужно сделать: throw new RuntimeException("Unhandled exception", e); - это все еще гарантирует, что вы увидите все сообщения об ошибках и другие детали.

Как только вы сделаете это, сообщение об ошибке сообщит вам, что происходит не так.

0 голосов
/ 28 апреля 2020

Я понял .. Мой wamp Mysql URL сервера был localhost: 3308 .. Но я написал 3306 в моей программе ... наконец-то это решено .. Спасибо всем за помощь

0 голосов
/ 27 апреля 2020

Для этого конкретного исключения, которое вы получаете за то, что есть только несколько причин, если вы успешно установили MySql. (Class.forName("com.mysql.cj.jdbc.Driver") не повлияет на ваш код). Это следующие причины:

  1. Вы не создали базу данных company отсутствует в вашей базе данных MySql.
  2. Неверное имя пользователя для MySql.
  3. Неверный пароль для пользователя root (Вы не указали)
  4. MySql сервер не запущен В вашей системе для подключения клиента (Запустите его перед входом в систему) для windows вы можете запустить этот файл \MySQL\MySQL Server 8.0\bin\mysqld.exe, чтобы запустить его.

Пожалуйста, отметьте все эти возможности.

Я попробовал ваш код в моей базе данных, он работает нормально, просто проверьте возможные причины.

...