我正在尝试连接到 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/