Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java与JDBC连接到Postgres-SQLException_Java_Postgresql_Jdbc - Fatal编程技术网

Java与JDBC连接到Postgres-SQLException

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);

我正在尝试连接到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://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没有任何作用。如果驱动程序不在类路径上,那么试图获取对它的引用将引发异常。