Подтвердить что ты не робот

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

У меня есть эта 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)

Что я делаю неправильно?

4b9b3361

Ответ 1

Убедитесь, что вы запускаете это сначала:

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

Это заставляет драйвер регистрироваться, так что Java знает, как обрабатывать эти строки подключения к базе данных.

Для получения дополнительной информации см. ссылка на MySQL Connector.

Ответ 2

Вам нужно загрузить jdbc driver. Рассмотрим ниже код.

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

            // connect way #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("Connected to the database test1");
            }

            // connect way #2
            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");
            }

            // connect way #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("Connected to the database test3");
            }
   } catch (SQLException ex) {
            System.out.println("An error occurred. Maybe user/password is invalid");
            ex.printStackTrace();
   } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }

Ответ 3

Пример извлечения данных из таблицы, содержащей столбцы column1, column2, column3 column4, cloumn1 и 2, содержит значения int и столбцы 3 и 4, удерживая varchar(10)

import java.sql.*; 
// need to import this as the STEP 1. Has the classes that you mentioned  
public class JDBCexample {
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
    static final String DB_URL = "jdbc:mysql://LocalHost:3306/databaseNameHere"; 
    // DON'T PUT ANY SPACES IN BETWEEN and give the name of the database (case insensitive) 

    // database credentials
    static final String USER = "root";
    // usually when you install MySQL, it logs in as root 
    static final String PASS = "";
    // and the default password is blank

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

        try {
    // registering the driver__STEP 2
            Class.forName("com.mysql.jdbc.Driver"); 
    // returns a Class object of com.mysql.jdbc.Driver
    // (forName(""); initializes the class passed to it as String) i.e initializing the
    // "suitable" driver
            System.out.println("connecting to the database");
    // opening a connection__STEP 3
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
    // executing a query__STEP 4 
            System.out.println("creating a statement..");
            stmt = conn.createStatement();
    // creating an object to create statements in SQL
            String sql;
            sql = "SELECT column1, cloumn2, column3, column4 from jdbcTest;";
    // this is what you would have typed in CLI for MySQL
            ResultSet rs = stmt.executeQuery(sql);
    // executing the query__STEP 5 (and retrieving the results in an object of ResultSet)
    // extracting data from result set
            while(rs.next()){
    // retrieve by column name
                int value1 = rs.getInt("column1");
                int value2 = rs.getInt("column2");
                String value3 = rs.getString("column3");
                String value4 = rs.getString("columnm4");
    // displaying values:
                System.out.println("column1 "+ value1);
                System.out.println("column2 "+ value2);
                System.out.println("column3 "+ value3);
                System.out.println("column4 "+ value4);

            }
    // cleaning up__STEP 6
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException e) {
    //  handle sql exception
            e.printStackTrace();
        }catch (Exception e) {
    // TODO: handle exception for class.forName
            e.printStackTrace();
        }finally{  
    //closing the resources..STEP 7
            try {
                if (stmt != null)
                    stmt.close();
            } catch (SQLException e2) {
                e2.printStackTrace();
            }try {
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e2) {
                e2.printStackTrace();
            }
        }
        System.out.println("good bye");
    }
}

Ответ 4

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

Если вы этого еще не сделали, сообщите мне, я объясню ответ

Ответ 5

В коде отсутствует код Class.forName("com.mysql.jdbc.Driver");

Это то, чего вам не хватает, чтобы все работало.

Ответ 6

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

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");

Теперь он работает! Я не знаю, почему это хорошо работает на местном уровне, мне нужна ваша помощь, спасибо вам большое!

Ответ 7

Все ответы здесь используют строку Class.forName("my.vandor.Driver"); для загрузки драйвера.

В качестве (лучшей) альтернативы вы можете использовать вспомогательный класс DriverManager, который предоставляет вам несколько методов для обработки ваших драйверов JDBC.

Возможно, вы захотите

  • Используйте DriverManager.registerDriver(driverObject);, чтобы зарегистрировать ваш драйвер в списке драйверов.

Регистрирует данный драйвер с помощью DriverManager. Недавно загруженный класс драйвера должен вызвать метод registerDriver, чтобы он сам узнал DriverManager. Если драйвер в настоящий момент зарегистрирован, никаких действий не предпринимается

  1. Используйте DriverManager.deregisterDriver(driverObject);, чтобы удалить его.

Удаляет указанный драйвер из списка зарегистрированных драйверов DriverManager.

Пример:

Driver driver = new oracle.jdbc.OracleDriver();
DriverManager.registerDriver(driver);
Connection conn = DriverManager.getConnection(url, user, password);
// ... 
// and when you don't need anything else from the driver
DriverManager.deregisterDriver(driver);

или еще лучше, используйте DataSource

Ответ 8

попробуйте это

String url = "jdbc:mysql://localhost:3306/<dbname>";
String user = "<username>";
String password = "<password>";
conn = DriverManager.getConnection(url, user, password); 

Ответ 9

У меня была аналогичная проблема, просто проверьте порт, на котором запущен ваш сервер Mysql, который решит проблему.

Например, мой код:

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:8080/bddventas","root","");

меняет строку на

Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bddventas","root","");

и voila!!, эта работа, потому что мой сервер работал на этом порту

Надеемся на эту помощь