我试图连接到一个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:***************
我相信,你的问题是,你的连接网址格式不正确。
当DriverManager.getConnection
抛出的SQLException,该消息包括传递给函数的精确url
值。在你的情况,看起来像jdbc:postgres://vuqmbekwlgohkw:******
。
但很明显,这是不是你正在使用的URL。你已经用星号代替URL的一部分。这表明,你认为该URL的格式为:
jdbc:postgres://username:password@host:port/dbname
这似乎是什么的Heroku在DATABASE_URL环境变量提供。您正在使用星号来阻止我们看到密码。
然而,它看起来像PostgreSQL的JDBC驱动程序不接受这种格式的URL。当我想,我也得到了“没有合适的驱动程序”的错误。 According to the documentation,URL的格式为:
jdbc:postgres://host:port/database
有些部分是可选的,但司机似乎不支持该URL把用户名或密码。
我可以通过使用文档中描述的URL格式,并使用连接属性设置用户名和密码连接到AWS PostgreSQL实例。
你说你是新的,所以我与痛苦明显要开始,你有你的类路径中的驱动程序?
这是您添加到您的项目罐子,你可以从https://jdbc.postgresql.org/下载
否则,我有一个为我工作,但我不完全使用JDBC,那是一个春天启动项目的URL的一个例子:
jdbc:postgresql://ec2-174-99-88-88.compute-1.amazonaws.com:5432/asdfasdfsadf?sslmode=require
没有端口号,在你的评论网址,而不是所有的参数都可能得到支持,像威利斯指出。