0

java.sql.SQLException: Не найден подходящий драйвер для jdbc:mysql://localhost:3306/dbname

9

Проблема с подключением к базе данных в Java: "java.sql.SQLException: No suitable driver found"

У меня есть программа на Java: MySQLConnectExample.java.

import java.sql.*;
import java.util.Properties;

public class MySQLConnectExample {
    public static void main(String[] args) {
        Connection conn1 = null;
        Connection conn2 = null;
        Connection conn3 = null;

        try {
            String url1 = "jdbc:mysql://localhost:3306/aavikme";
            String user = "root";
            String password = "aa";

            conn1 = DriverManager.getConnection(url1, user, password);
            if (conn1 != null)
                System.out.println("Connected to the database test1");

            String url2 = "jdbc:mysql://localhost:3306/aavikme?user=root&password=aa";
            conn2 = DriverManager.getConnection(url2);
            if (conn2 != null) {
                System.out.println("Connected to the database test2");
            }

            String url3 = "jdbc:mysql://localhost:3306/aavikme";
            Properties info = new Properties();
            info.put("user", "root");
            info.put("password", "aa");

            conn3 = DriverManager.getConnection(url3, info);
            if (conn3 != null) {
                System.out.println("Connected to the database test3");
            }
        } catch (SQLException ex) {
            System.out.println("An error occurred. Maybe user/password is invalid");
            ex.printStackTrace();
        }
    }
}

Я компилирую его следующим образом:

E:\java mysql code driver>javac MySQLConnectExample.java

E:\java mysql code driver>java -cp mysql-connector-java-3.0.11-stable-bin.jar;.
MySQLConnectExample

Я получаю эту ошибку:

An error occurred. Maybe user/password is invalid
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/aavikme
        at java.sql.DriverManager.getConnection(DriverManager.java:596)
        at java.sql.DriverManager.getConnection(DriverManager.java:215)
        at MySQLConnectExample.main(MySQLConnectExample.java:20)

Что я делаю не так?

Пожалуйста, помогите мне разобраться с этой ошибкой и подключением к базе данных MySQL.

5 ответ(ов)

0

Чтобы подключиться к базе данных MySQL, вам необходимо загрузить JDBC-драйвер. Рассмотрим приведенный ниже код:

try {
    Class.forName("com.mysql.jdbc.Driver");

    // способ подключения #1
    String url1 = "jdbc:mysql://localhost:3306/aavikme";
    String user = "root";
    String password = "aa";

    conn1 = DriverManager.getConnection(url1, user, password);
    if (conn1 != null) {
        System.out.println("Подключено к базе данных test1");
    }

    // способ подключения #2
    String url2 = "jdbc:mysql://localhost:3306/aavikme?user=root&password=aa";
    conn2 = DriverManager.getConnection(url2);
    if (conn2 != null) {
        System.out.println("Подключено к базе данных test2");
    }

    // способ подключения #3
    String url3 = "jdbc:mysql://localhost:3306/aavikme";
    Properties info = new Properties();
    info.put("user", "root");
    info.put("password", "aa");

    conn3 = DriverManager.getConnection(url3, info);
    if (conn3 != null) {
        System.out.println("Подключено к базе данных test3");
    }
} catch (SQLException ex) {
    System.out.println("Произошла ошибка. Возможно, неверный логин/пароль");
    ex.printStackTrace();
} catch (ClassNotFoundException e) {
    // TODO Авто-сгенерированный блок обработки исключений
    e.printStackTrace();
}

В этом коде сначала производится попытка загрузить драйвер с помощью Class.forName. Затем представлено три разных способа подключения к базе данных: с указанием параметров напрямую, через строку подключения и с использованием объекта Properties. В случае возникновения ошибки, связанной с SQL или загрузкой класса, она обрабатывается и выводится соответствующее сообщение. Не забудьте, что вам также нужно убедиться, что JDBC-драйвер для MySQL добавлен в ваш проект, иначе будет выброшено исключение ClassNotFoundException.

0

У меня была такая же проблема, и вот мой код:

private Connection conn = DriverManager.getConnection(Constant.MYSQL_URL, Constant.MYSQL_USER, Constant.MYSQL_PASSWORD);
private Statement stmt = conn.createStatement();

Я не загружал класс драйвера, но всё работало локально, и я мог выполнять запросы к MySQL. Однако, когда я развернул приложение на Tomcat, возникла ошибка:

No suitable driver found for jdbc:mysql://172.16.41.54:3306/eduCloud

Поэтому я загрузил класс драйвера, как показано ниже, когда увидел другие ответы:

Class.forName("com.mysql.jdbc.Driver");

Теперь всё работает! Я не понимаю, почему локально всё было в порядке, и мне нужна ваша помощь. Большое спасибо!

0

Чтобы получить данные из таблицы с колонками column1, column2, column3 и column4, где column1 и column2 имеют целочисленные значения, а column3 и column4 имеют тип varchar(10), вы можете использовать следующий пример кода на Java с использованием JDBC:

import java.sql.*;

public class JDBCexample {
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
    static final String DB_URL = "jdbc:mysql://LocalHost:3306/databaseNameHere"; 

    // Учетные данные базы данных
    static final String USER = "root";
    static final String PASS = "";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;

        try {
            // Регистрация драйвера
            Class.forName(JDBC_DRIVER); 
            System.out.println("Подключение к базе данных...");
            
            // Открытие соединения
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            System.out.println("Создание запроса...");
            
            // Создание объекта для исполнения SQL запросов
            stmt = conn.createStatement();
            String sql = "SELECT column1, column2, column3, column4 FROM jdbcTest;";
            
            // Исполнение запроса и получение результата
            ResultSet rs = stmt.executeQuery(sql);

            // Извлечение данных из результата
            while(rs.next()){
                int value1 = rs.getInt("column1");
                int value2 = rs.getInt("column2");
                String value3 = rs.getString("column3");
                String value4 = rs.getString("column4");
                
                // Вывод значений
                System.out.println("column1: " + value1);
                System.out.println("column2: " + value2);
                System.out.println("column3: " + value3);
                System.out.println("column4: " + value4);
            }
            
            // Закрытие ресурсов
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException e) {
            // Обработка исключений базы данных
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {  
            // Закрытие ресурсов
            try {
                if (stmt != null) stmt.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
            try {
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
        System.out.println("До свидания");
    }
}

В этом коде:

  1. Вы подключаетесь к базе данных, используя JDBC.
  2. Регистрация драйвера JDBC происходит с помощью Class.forName().
  3. Используется DriverManager.getConnection() для установления соединения с базой данных.
  4. Создается SQL запрос, который выбирает данные из таблицы jdbcTest.
  5. Результаты запроса извлекаются с помощью ResultSet, и значения печатаются в консоль.
  6. Закрываются все ресурсы после завершения работы чтобы избежать утечки памяти.

Убедитесь, что указанные вами имя базы данных, пользователь и пароль правильные.

0

Вы, возможно, не скопировали файл MySQL connector/J jar в папку lib, и этот файл должен присутствовать в classpath.

Если вы этого не сделали, дайте знать, и я смогу подробнее объяснить.

0

В вашем коде отсутствует строка Class.forName("com.mysql.jdbc.Driver");. Это именно то, что вам нужно добавить, чтобы все заработало.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь