Java 使用 JDBC 连接到 Postgres - SQLException

标签 java postgresql jdbc

我正在尝试连接到 Postgres 数据库。我对此很陌生,并且已经阅读了论坛上的帖子。但我没能做到。

public void connect() {
    //Connection con = null;
    try {
        Class.forName("org.postgresql.Driver");

        Properties props = new Properties();
        props.setProperty("user", user);
        props.setProperty("password", password);
        props.setProperty("ssl","true");
        Connection conn = DriverManager.getConnection(url, props);
        //String url = "jdbc:postgresql://localhost/test?user=fred&password=secret&ssl=true";
        //Connection conn = DriverManager.getConnection(url);
        System.out.println("Erfolgreich verbunden!");
    }
    catch (Exception  e){
        e.printStackTrace();
        System.err.println(e.getClass().getName()+": "+e.getMessage());
        System.exit(0);
    }
}

编辑: 我更新了我的代码。 数据库部署到heroku。 它抛出错误:

java.sql.SQLException: No suitable driver found for jdbc:postgres://vuqmbekwlgohkw:******
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:702)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:189)
at com.company.Database.connect(Database.java:20) p
at com.company.Main.start(Main.java:16)
at com.company.Main.main(Main.java:25)
java.sql.SQLException: No suitable driver found for jdbc:postgres://vuqmbekwlgohkw:***************

最佳答案

我认为您的问题是您的连接 URL 格式不正确。

DriverManager.getConnection抛出SQLException时,消息包含传递给函数的确切url值。在您的情况下,它看起来像jdbc:postgres://vuqmbekwlgohkw:******

但显然这不是您正在使用的 URL。您已将部分 URL 替换为星号。这表明您认为 URL 的格式是:

jdbc:postgres://用户名:密码@主机:端口/数据库名

这似乎是 Heroku 在 DATABASE_URL 环境变量中提供的。您使用星号是为了防止我们看到密码。

但是,PostgreSQL JDBC 驱动程序似乎不接受这种格式的 URL。当我尝试时,我也收到“没有合适的驱动程序”错误。 According to the documentation ,URL的格式为:

jdbc:postgres://主机:端口/数据库

某些部分是可选的,但驱动程序似乎不支持将用户名或密码放入 URL 中。

我能够使用文档中描述的 URL 格式并使用连接属性设置用户名和密码来连接到 AWS PostgreSQL 实例。

关于Java 使用 JDBC 连接到 Postgres - SQLException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54470887/

相关文章:

java - 如何使用相同的语句和结果集运行多个选择查询?

java sql 日期时间

java - 遍历列表时始终索引 0

java - 通过 ContentValues 将时间戳插入数据库

java - 更改 Eclipse 中的返回类型错误

sql - 从 SQL 脚本在 H2 数据库中插入长文本

java - 如何处理 Bean 验证异常

ruby-on-rails - Postgres - 每天随机化一次结果

postgresql - 'service postgresql start' 无法在 Fedora 上启动 postgres 服务

c# - 使用 Npgsql 在 postgresql 中插入字符数组