如何从 Java 连接到我的 Heroku PostgreSQL 数据库 [英] How to connect to my Heroku PostgreSQL database from Java

查看:78
本文介绍了如何从 Java 连接到我的 Heroku PostgreSQL 数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个无法从 Java 连接的 Heroku PostgreSQL 数据库.我尝试了不同的方法,但都没有成功.

以下是我的 Java 代码:

import java.sql.Connection;导入 java.sql.DriverManager;导入 java.sql.SQLException;公共类 MainConfig {公共静态无效主(字符串 [] args){尝试{数据源();System.out.println("连接");}捕获(异常前){ex.printStackTrace();}}公共静态连接 dataSource() 抛出 URISyntaxException,SQLException {String ConnectionString ="jdbc:postgresql://l********n:cPd7VRjIhNVWorZ4uWEeZWKYqV@ec2-184-73-251-115.compute-1.amazonaws.com:5432/dac36a93ohuvsd";字符串用户名 = "****";字符串密码 = "***";返回 DriverManager.getConnection(ConnectionString, 用户名, 密码);}}

我在控制台中得到的错误是:

<代码>>org.postgresql.util.PSQLException:连接尝试失败.在 org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:233)在 org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:64)在 org.postgresql.jdbc2.AbstractJdbc2Connection.(AbstractJdbc2Connection.java:144)在 org.postgresql.jdbc3.AbstractJdbc3Connection.(AbstractJdbc3Connection.java:29)在 org.postgresql.jdbc3g.AbstractJdbc3gConnection.(AbstractJdbc3gConnection.java:21)在 org.postgresql.jdbc4.AbstractJdbc4Connection.(AbstractJdbc4Connection.java:31)在 org.postgresql.jdbc4.Jdbc4Connection.(Jdbc4Connection.java:24)在 org.postgresql.Driver.makeConnection(Driver.java:410)在 org.postgresql.Driver.connect(Driver.java:280)在 java.sql.DriverManager.getConnection(Unknown Source)在 java.sql.DriverManager.getConnection(Unknown Source)在 MainConfig.dataSource(MainConfig.java:34)在 MainConfig.main(MainConfig.java:14)引起:java.net.UnknownHostException:lxlrnhejlzmyun:cPd7VRjIhNVWorZ4uWEeZWKYqV@ec2-184-73-251-115.compute-1.amazonaws.com在 java.net.AbstractPlainSocketImpl.connect(Unknown Source)在 java.net.PlainSocketImpl.connect(Unknown Source)在 java.net.SocksSocketImpl.connect(未知来源)在 java.net.Socket.connect(来源不明)在 org.postgresql.core.PGStream.(PGStream.java:61)在 org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:109)……还有 12 个

我已将 Java 驱动程序添加到我的构建路径 postgresql-9.3-1102.jdbc41.jar

我尝试过的另一种连接方法如下所述,并带有错误消息:

 import java.net.URI;导入 java.net.URISyntaxException;导入 java.sql.Connection;导入 java.sql.DriverManager;导入 java.sql.SQLException;公共类 MainConfig {公共静态无效主(字符串 [] args){尝试{数据源();System.out.println("连接");}捕获(异常前){ex.printStackTrace();}}公共静态连接 dataSource() 抛出 URISyntaxException,SQLException {URI dbUri = 新 URI(System.getenv("postgres://l**********n:cPd7VRjIhNVWorZ4uWEeZWKYqV@ec2-184-73-251-115.compute-1.amazonaws.com:5432/dac36a93ohuvsd"));String username = dbUri.getUserInfo().split(":")[0];String password = dbUri.getUserInfo().split(":")[1];String ConnectionString = "jdbc:postgresql://" + dbUri.getHost() + ':' + dbUri.getPort() + dbUri.getPath();返回 DriverManager.getConnection(ConnectionString, 用户名, 密码);}}

错误

<代码>>java.lang.NullPointerException在 java.net.URI$Parser.parse(来源不明)在 java.net.URI.(来源不明)在 MainConfig.dataSource(MainConfig.java:23)在 MainConfig.main(MainConfig.java:14)

我做错了什么?

解决方案

格式应为:jdbc:postgresql://host:port/database,而在您的代码中,请注意几个:"jdbc:postgresql://l********n:cPd7VRjIhNVWorZ4uWEeZWKYqV@ec2-184-73-251-115.compute-1.amazonaws.com:5432/dac36a93ohuvsd">

I have a Heroku PostgreSQL database to which I can't connect from Java. I have tried different methods but without success.

Below is my Java code:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;



public class MainConfig {

    public static void main(String[] args) {

     try{
         dataSource();
         System.out.println("conected");
     }
    catch(Exception ex){
        ex.printStackTrace();
    }
    }

    public static Connection dataSource() throws URISyntaxException, SQLException {

        String ConnectionString ="jdbc:postgresql://l********n:cPd7VRjIhNVWOrZ4uWEeZWKYqV@ec2-184-73-251-115.compute-1.amazonaws.com:5432/dac36a93ohuvsd";
        String username = "****";
        String password = "***";

        return DriverManager.getConnection(ConnectionString, username, password);
    }

}

The error I get in console is:

> org.postgresql.util.PSQLException: The connection attempt failed.
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:233)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:64)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:144)
    at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:29)
    at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:21)
    at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:31)
    at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
    at org.postgresql.Driver.makeConnection(Driver.java:410)
    at org.postgresql.Driver.connect(Driver.java:280)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at MainConfig.dataSource(MainConfig.java:34)
    at MainConfig.main(MainConfig.java:14)
Caused by: java.net.UnknownHostException: lxlrnhejlzmyun:cPd7VRjIhNVWOrZ4uWEeZWKYqV@ec2-184-73-251-115.compute-1.amazonaws.com
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at org.postgresql.core.PGStream.<init>(PGStream.java:61)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:109)
    ... 12 more

I have added to my Build Path the Java driver postgresql-9.3-1102.jdbc41.jar

Another method I have tried for connecting is described bellow with the error message:

    import java.net.URI;
import java.net.URISyntaxException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;



public class MainConfig {

    public static void main(String[] args) {

     try{
         dataSource();
         System.out.println("conected");
     }
    catch(Exception ex){
        ex.printStackTrace();
    }
    }

    public static Connection dataSource() throws URISyntaxException, SQLException {
        URI dbUri = new URI(System.getenv("postgres://l**********n:cPd7VRjIhNVWOrZ4uWEeZWKYqV@ec2-184-73-251-115.compute-1.amazonaws.com:5432/dac36a93ohuvsd"));

        String username = dbUri.getUserInfo().split(":")[0];
        String password = dbUri.getUserInfo().split(":")[1];
        String ConnectionString = "jdbc:postgresql://" + dbUri.getHost() + ':' + dbUri.getPort() + dbUri.getPath();



        return DriverManager.getConnection(ConnectionString, username, password);
    }

}

Error

> java.lang.NullPointerException
    at java.net.URI$Parser.parse(Unknown Source)
    at java.net.URI.<init>(Unknown Source)
    at MainConfig.dataSource(MainConfig.java:23)
    at MainConfig.main(MainConfig.java:14)

What I am doing wrong?

解决方案

The format should be: jdbc:postgresql://host:port/database, whereas in your code its is, note couple of ':' jdbc:postgresql://l********n:cPd7VRjIhNVWOrZ4uWEeZWKYqV@ec2-184-73-251-115.compute-1.amazonaws.com:5432/dac36a93ohuvsd"

这篇关于如何从 Java 连接到我的 Heroku PostgreSQL 数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆