Iam tryig连接到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:***************
答案 0 :(得分:0)
我相信您的问题是您的连接网址格式错误。
当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实例。
答案 1 :(得分:0)
您说您是新手,所以我要从显而易见的痛苦开始,您的类路径上有驱动程序吗?
这是一个添加到项目中的jar,可以从https://jdbc.postgresql.org/下载
否则,我有一个适合我的网址示例,除了我不完全使用jdbc之外,它是一个spring-boot项目:
jdbc:postgresql://ec2-174-99-88-88.compute-1.amazonaws.com:5432/asdfasdfsadf?sslmode=require
注释的URL中没有端口号,并且像Willis指出的那样,可能不支持所有参数。