Java与JDBC连接到Postgres-SQLException
我正在尝试连接到Postgres数据库。我真的是个新手,在论坛上读过一篇帖子。但我没有做到Java与JDBC连接到Postgres-SQLException,java,postgresql,jdbc,Java,Postgresql,Jdbc,我正在尝试连接到Postgres数据库。我真的是个新手,在论坛上读过一篇帖子。但我没有做到 public void connect() { //Connection con = null; try { Class.forName("org.postgresql.Driver"); Properties props = new Properties(); props.setProperty("user", user);
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://username:password@主机:端口/dbname
这似乎是Heroku在DATABASE_URL环境变量中提供的。您使用星号阻止我们查看密码
但是,PostgreSQL JDBC驱动程序似乎不接受这种格式的URL。当我尝试时,也出现了“没有合适的驱动程序”错误,URL的格式为:
jdbc:postgres://host:port/database
有些部分是可选的,但驱动程序似乎不支持在URL中输入用户名或密码
通过使用文档中描述的URL格式并使用连接属性设置用户名和密码,我能够连接到AWS PostgreSQL实例。您说您是新用户,所以我将从一个显而易见的问题开始,您的类路径上有驱动程序吗 它是一个可以从中下载的jar,可以添加到项目中 除此之外,我还有一个url示例,它对我有效,除了我没有完全使用jdbc之外,它是一个spring boot项目:
jdbc:postgresql://ec2-174-99-88-88.compute-1.amazonaws.com:5432/asdfasdfsadf?sslmode=require
您的注释URL中没有端口号,并且并非所有参数都可以支持,正如Willis所指出的。
InitialContext
和按JNDI名称进行的查找适用于应用程序服务器(JEE技术)如果您不是在开发JEE应用程序,您只需遵循以下JDBC连接示例:谢谢,但这会导致错误:java.sql.SQLException:找不到适合JDBC的驱动程序:postgres。您现在发布的代码不会引发此异常。不清楚你在问什么。只有你认为NoInitialContextException
和SQLException
是同一件事,它们不是。我在这里对每个人都一视同仁。我认为他在他的类路径上有驱动程序,因为他报告说添加Class.forName没有任何作用。如果驱动程序不在类路径上,那么试图获取对它的引用将引发异常。