Java JDB C - Не найдено подходящего драйвера - PullRequest
1 голос
/ 15 января 2020

У меня проблема с доступом моего кода к локальной базе данных. Я использую 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);
    }

}

added the JAR with Add Jar, since it is in the lib folder of the project..

Ответы [ 2 ]

5 голосов
/ 15 января 2020

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

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

См. PostgreSQL JDB C документы для получения дополнительной информации.

0 голосов
/ 15 января 2020

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

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

You должен быть пул соединений с базой данных.

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

...