Java JDBC - не найден подходящий драйвер

У меня проблема с доступом моего кода к локальной базе данных. Я использую Eclipse и postgresql.

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

Файл jar для драйверов уже находится в библиотеке и также добавлен в путь сборки. Однако я все еще получаю ошибку от водителя, не найденного.

Не удается получить соединение: java.sql.SQLException: не найден подходящий драйвер для psql -h localhost beleg postgres

Мой код выглядит так:

package DB;
import java.sql.*;

public class Connections {

private Connection dbcon;
private Statement stmt;
private Statement stmt2;

Connections(String db_url, String username, String password) {
    try {
        Class.forName("org.postgresql.Driver");
        dbcon = DriverManager.getConnection(db_url, username, password);

        stmt = dbcon.createStatement();
        stmt2 = dbcon.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, 
        ResultSet.CONCUR_READ_ONLY);
    } catch (Exception e) {
        System.out.println("Can't get a connection: " + e.toString());

        try {
            if (stmt != null)
                stmt.close();
        } catch (SQLException f) {
        }

        try {
            if (stmt2 != null)
                stmt2.close();
        } catch (SQLException f) {
        }
        try {
            if (dbcon != null)
                dbcon.close();
        } catch (SQLException f) {
        }
        System.exit(0);
    }

}

добавил JAR с помощью Add Jar, поскольку он находится в папке lib проекта.

Всего 2 ответа


Ваш URL JDBC недействителен. Попробуйте изменить это на:

jdbc:postgresql://localhost/<database name>

См. Документацию по PostgreSQL JDBC для получения дополнительной информации.


Когда вы получите правильный URL, рассмотрите возможность переосмысления дизайна вашего класса. java.sql.Statement не является потокобезопасным. Он никогда не должен быть общей закрытой переменной-членом.

Вы должны создать Statement и ResultSet в области действия метода, использовать их и закрыть их перед выходом из метода.

Вы должны объединять соединения с базой данных.

Доступ к базе данных уже давно решен в Java. Если вы не используете Spring Boot, я бы порекомендовал взглянуть на их реализацию JdbcTemplate чтобы увидеть, как это можно сделать с минимальными шаблонами.


Есть идеи?

10000