gpt4 book ai didi

java - 通过 Java 连接到 Amazon EC2 上的 PostgreSQL

转载 作者:行者123 更新时间:2023-11-29 14:19:04 26 4
gpt4 key购买 nike

我想连接到 Amazon EC2 上的 Java 中的 PostgreSQL 数据库。我可以使用 Mac 上名为 Postico 的 postgres 客户端连接到它。我指定下一个信息:

  1. 昵称

  2. 主机 (ec2-xx-xx-xx-xx.xx-xx-x.compute.amazonaws.com)

  3. 用户

  4. 密码

  5. 数据库名称

  6. SSH 主机

  7. 用户

  8. 密码 - 空白

  9. 私钥 - .pem 文件

我找不到任何关于如何在 Java 中连接它的示例。我找到了一些 RedshiftJDBC 驱动程序并将其添加到项目中。比我试过这个:

try {
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException e) {
System.out.println("Where is your MySQL JDBC Driver?");
e.printStackTrace();
return;
}
System.out.println("MySQL JDBC Driver Registered!");
try {
this.connection = DriverManager.getConnection("jdbc:postgresql://" +DNS+"/"+myDBname, MYSQLUSER, MYSQLPW);
} catch (SQLException e) {
System.out.println("Connection Failed! Check output console");
e.printStackTrace();
}

if (connection != null) {
System.out.println("You made it, take control your database now!");
} else {
System.out.println("Failed to make connection!");
}

我知道这行不通,但至少我试过了))我不知道如何在请求中指定私钥(如何发送)或其他任何内容。有人可以帮我吗?谢谢。

最佳答案

使用 PostgreSQL JDBC 驱动程序尝试以下代码。您想让代码更具弹性(例如,在连接和发送查询之间检查数据库是否为 null 等),但这应该让您继续前进。

private final String DB_HOST = "YOUR_EC2_HOSTNAME";
private final String DB_PORT = "5432";
private final String DB_USER = "YOUR_POSTGRES_USERNAME";
private final String DB_PASSWD = "YOUR_POSTGRES_PASSWORD";
private final String DB_NAME = "YOUR_POSTGRES_DBNAME";
private final String DB_URL = "jdbc:postgresql://" + DB_HOST + ":" + DB_PORT + "/" + DB_NAME;

private final String INSERT = "INSERT INTO articles (date, name, uuid) VALUES (?, ?, ?)";
private Connection db = null;

public PostgreSQLService() {
try {
Class.forName("org.postgresql.Driver");
db = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWD);
} catch (ClassNotFoundException | SQLException ex) {
log.error(ex);
}

try (PreparedStatement st = db.prepareStatement(INSERT)) {
st.setEscapeProcessing(false);

st.setDate(1, new java.sql.Date(DateUtil.getToday().getTime()));
st.setString(2, "YOUR_NAME");
st.setObject(3, UUID.randomUUID());

if (st.executeUpdate() <= 0) {
throw new PostgreSQLServiceException("0 rows inserted while trying to insert a new row ::: " + st.toString());
}

} catch (SQLException sqle) {
throw new PostgreSQLServiceException("Received an SQLException trying to insert a row", sqle);
}
}

Maven 依赖是:

<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1208</version>
</dependency>

请注意,如果您从 AWS 外部执行此代码,则需要在该 EC2 实例的安全组中打开端口 5432。

我还建议查看 Amazon RDS。您可以使用上述代码连接到它,就像在 EC2 上运行的 Postgres 实例一样。

希望对您有所帮助!

关于java - 通过 Java 连接到 Amazon EC2 上的 PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36205675/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com