如何设置PostgreSQL以使用Java

本文介绍了如何在Java中设置和使用PostgreSQL,重点在于PostgreSQL的JDBC接口。内容包括PostgreSQL的特点,如开源、JSON支持和多版本并发控制,以及如何配置JDBC驱动,连接数据库,创建数据库和表,执行SQL查询和事务操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Postgres支持Java语言,但是通过Java数据库连接(JDBC)界面,在Postgres中使用Java更加容易。 以下是Java数据库连接性界面的介绍,并为您提供了一些入门的代码提示。

什么是PostgreSQL以及为什么再次变得很酷

PostgreSQL是一种非常流行的面向对象的关系数据库管理系统(RDBMS)。 它是开源且免费的,这使其在开发人员中非常受欢迎 。 该平台通过支持JSON来支持关系和非关系查询。 但是,Postgres的特征之一是它强调遵守SQL标准。 该数据库旨在处理从单台机器到数据仓库的各种工作负载

Postgres的主要功能包括:

  • 与主要操作系统的兼容性 -支持Windows,Linux,Mac OS,Solaris。
  • 主要的编程语言支持 -例如C / C ++,Phyton,Go和Java。
  • 多版本并发控制 -这是Postgres的主要功能,它允许多个读取器和写入器同时访问和在同一个数据库中工作。
  • 高度合规性-符合 SQL标准的169个功能。
  • 动态社区-定期开发和发布扩展。

尽管PostgreSQL是市场上最古老的数据库系统之一,但在开发人员和数据库管理员中仍被列为最流行的数据库管理系统之一。 其受欢迎的一些原因是:

  • 免费使用 -您可以存储不受限制的数据,而没有功能限制和分发限制。
  • 避免供应商锁定-由于允许分发,因此有许多公司为Postgres提供服务,从而消除了供应商锁定。
  • 可扩展 -Postgres社区利用简单的扩展功能几乎不断地向数据库添加功能。 这种灵活性使需要特定功能的用户可以为其编写扩展。

Postgres扩展使用户可以在不更改核心数据库的情况下适应他们的需求。 另外,一些很酷的PostgreSQL功能包括创建自己的数据类型和XML数据查询的功能。 流复制使postgres备份解决方案非常有吸引力。

PostgreSQL通过支持JavaScript对象符号(JSON)来运行NoSQL查询,该对象是用于存储和传输数据的轻量级格式。 Postgres通过Java数据库连接(JDBC)支持Java,该连接允许Java程序使用标准Java代码连接到PostgreSQL数据库 。 继续阅读以了解如何设置Postgres以使用Java。

设置PostgreSQL以使用Java

在开始在Java程序中使用PostgreSQL之前,我们需要在计算机上设置JDBC和Java。

  1. 从Postgres存储库下载并安装最新版本的Postgres JDBC
  2. 您应该将下载的.jar文件添加到类路径中,或者将其与-classpath选项一起使用。
  3. 必须将PostgreSQL服务器配置为允许TCP / IP连接 ,然后通过设置客户端身份验证来验证是否允许用户连接到服务器。
  4. 创建将通过JDBC访问的数据库需要对数据进行正确的编码,这意味着您应将UNICODE编码用作默认值,以避免出现差异。

初始化驱动程序意味着:

  • 使用import java.sql.* 导入JDBC
  • 加载驱动程序 -在新版本中,当应用程序连接到PostgreSQL时,JVM将加载驱动程序。

Postgresql Java Jdbc接口-它是什么和基本命令

如上所述,JDBC是Java的核心API ,它为兼容SQL的数据库(尤其是PostgreSQL)提供了标准接口。 我们介绍了如何设置JDBC驱动程序以及创建数据库时的一些注意事项。 但是,我们如何连接到现有数据库? 以下来自Codota代码库的Java代码示例演示了如何使用Amazon Web Services连接到postrgresql数据库实例

 public void donothing() throws SQLException, ClassNotFoundException
{
  Class.forName("org.postgresql.Driver");
  String url = "jdbc:postgresql://localhost/test?user=fred&password=secret&ssl=true";
  Connection conn = DriverManager.getConnection(url);
  // Do stuff here
  conn.close();
}

使用JDBC API从PostgreSQL数据库中的表查询数据
建立与PostgreSQL服务器的数据库连接后,您需要创建一个语句对象,该对象代表一个SQL语句。 共有三种Statement对象:

  • 语句 -您可以实现不带参数的简单语句
  • PreparedStatement —一个子类,您可以使用它将参数添加到SQL语句中。
  • CallableStatement-您可以使用它来扩展用于执行存储过程的PreparedStatement。

创建Statement对象后,可以使用以下三种方法之一执行查询:

  • Execute —如果查询的第一个对象是ResultSet对象,则此命令将返回true。
  • executeQ uery-将仅返回一个ResultSet对象。
  • executeUpdate —您可以对INSERT或DELETE之类的语句使用此方法,因为它返回受该语句影响的行数。

最后,您可以使用Java游标来调用ResultSet对象的方法,然后使用try-with-resources语句。 这使您可以自动关闭所有三个对象( ResultSetStatementConnection )。

建立表格
您可以使用以下Java程序在打开的数据库中创建表。
import java.sql.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;


public class PostgreSQLJDBC {
   public static void main( String args[] ) {
      Connection c = null;
      Statement stmt = null;
      try {
         Class.forName("org.postgresql.Driver");
         c = DriverManager
            .getConnection("jdbc:postgresql://localhost:5432/testdb",
            "manisha", "123");
         System.out.println("Opened database successfully");

         stmt = c.createStatement();
         String sql = "CREATE TABLE COMPANY " +
            "(ID INT PRIMARY KEY     NOT NULL," +
            " NAME           TEXT    NOT NULL, " +
            " AGE            INT     NOT NULL, " +
            " ADDRESS        CHAR(50), " +
            " SALARY         REAL)";
         stmt.executeUpdate(sql);
         stmt.close();
         c.close();
      } catch ( Exception e ) {
         System.err.println( e.getClass().getName()+": "+ e.getMessage() );
         System.exit(0);
      }
      System.out.println("Table created successfully");
   }
}

程序被编译并执行后,将显示以下两行:

Opened database successfully
Table created successfully

使用java.sql.DriverManager 发现类似的代码片段示例 getConnection

插入操作

我们如何在桌子上创建记录

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class PostgreSQLJDBC {
   public static void main(String args[]) {
      Connection c = null;
      Statement stmt = null;
      try {
         Class.forName("org.postgresql.Driver");
         c = DriverManager
            .getConnection("jdbc:postgresql://localhost:5432/testdb",
            "manisha", "123");
         c.setAutoCommit(false);
         System.out.println("Opened database successfully");

         stmt = c.createStatement();
         String sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
            + "VALUES (1, 'Paul', 32, 'California', 20000.00 );";
         stmt.executeUpdate(sql);

         sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
            + "VALUES (2, 'Allen', 25, 'Texas', 15000.00 );";
         stmt.executeUpdate(sql);

         sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
            + "VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );";
         stmt.executeUpdate(sql);

         sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "
            + "VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );";
         stmt.executeUpdate(sql);

         stmt.close();
         c.commit();
         c.close();
      } catch (Exception e) {
         System.err.println( e.getClass().getName()+": "+ e.getMessage() );
         System.exit(0);
      }
      System.out.println("Records created successfully");
   }
}

用准备好的语句 发现 类似的例子

编译并执行上述程序后,它将在COMPANY表中创建给定记录,并显示以下两行。

Opened database successfully
Records created successfully

使用JDBC PostgreSQL事务使用JDBC事务API。

当您不希望执行一条SQL语句(除非另一条语句完成)时,这很有用。 例如,插入新演员和该演员领导的电影。 使用事务,可以确保两个语句都生效或都不生效。

第一步是禁用自动提交模式,因为Postgres将每条语句都视为事务,并自动提交它。 因此,如果要隔离事务中的一个或多个语句,则第一步是禁用自动提交模式。 您可以通过以下命令setAutoCommit() Connection的setAutoCommit()方法:

conn.setAutoCommit(false);

如果要提交事务,则应调用Connection对象的commit方法:

conn.commit();

接下来,当您调用commit()方法时,您将发现所有先前的语句作为一个单元一起提交。

回滚交易

有时,您没有得到您所期望的一项陈述的结果。 在这种情况下,可以使用Connection对象的rollback()方法来中断当前事务,将值恢复为原始值。

conn.rollback();

您可以在此YouTube视频教程中了解更多信息

底线

设置PostgreSQL JDBC接口似乎很棘手。 但是,最新版本的PostgreSQL通过将驱动程序自动加载到JVM中,使安装过程非常简单。

使用专有的JDBC接口,使用Java代码在PostgreSQL上工作更加容易。 在本文中,我们向您简要介绍了如何安装界面和基本命令以开始使用。


取得Codota


From: https://blog.codota.com/how-to-set-up-postgresql-to-work-with-java/

<think>我们正在回答用户关于“Java连接PostgreSQL数据库”的查询。用户要求提供教程、示例代码和配置步骤。根据引用内容,我们知道可以使用JDBC来连接。引用[1]提到需要添加PostgreSQLJDBC驱动依赖,引用[2]提到了下载驱动,引用[3]则给出了使用DriverManager.getConnection建立连接的示例代码(虽然示例中是MySQL,但原理相同,只需改变URL格式)。步骤应该包括:1.下载并添加PostgreSQLJDBC驱动(如jar文件)到项目依赖中。2.加载驱动(在较新版本的JDBC中,这一步通常可以省略,因为DriverManager会自动加载,但显式加载也是好的做法)。3.使用DriverManager.getConnection()方法,传入PostgreSQL的URL、用户名和密码。注意:PostgreSQL的URL格式为:jdbc:postgresql://host:port/database我们将按照以下结构组织回答:1.添加驱动依赖(两种方式:手动下载或使用Maven/Gradle)2.编写连接代码3.执行SQL语句的简单示例由于引用[3]中给出了一个连接MySQL的代码示例,我们可以将其改为PostgreSQL的格式。另外,引用[2]提到了“【JavaPostgreSQL数据库连接实战指南】”,但未给出具体内容,所以我们按照标准步骤来写。注意:用户的问题中没有提到需要执行SQL语句,但作为完整的教程,我们可以给出一个简单的查询示例。我们将生成一个简单的Java程序,包括连接和关闭连接,以及执行一个简单的查询(例如:SELECTversion())。同时,根据系统指令,我们需要生成相关问题。注意:引用标记要放在引用的内容后面,例如:添加PostgreSQLJDBC驱动依赖[^1]。</think>### Java 连接 PostgreSQL 数据库教程 #### 一、配置步骤 1. **添加 JDBC 驱动依赖** - Maven 项目(在 `pom.xml` 中添加): ```xml <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.6.0</version> <!-- 使用最新版本 --> </dependency> ``` - 手动下载:[官网下载](https://jdbc.postgresql.org/download.html) JAR 文件并添加到项目库[^1][^2] 2. **准备数据库信息** - 数据库 URL 格式:`jdbc:postgresql://<主机>:<端口>/<数据库名>` (默认主机:`localhost`,端口:`5432`) - 用户名和密码(需在 PostgreSQL 中创建) #### 二、连接数据库示例代码 ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class PGConnectionExample { public static void main(String[] args) { // 数据库配置参数 String url = "jdbc:postgresql://localhost:5432/testdb"; String user = "postgres"; String password = "your_password"; // 替换为实际密码 try (Connection conn = DriverManager.getConnection(url, user, password)) { System.out.println("✅ 成功连接到 PostgreSQL 数据库!"); System.out.println("数据库版本: " + conn.getMetaData().getDatabaseProductVersion()); } catch (SQLException e) { System.err.println("❌ 连接失败: " + e.getMessage()); e.printStackTrace(); } } } ``` #### 三、执行 SQL 操作示例 ```java // 续接上面的 Connection 对象 try (Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT version()")) { if (rs.next()) { System.out.println("PostgreSQL 版本: " + rs.getString(1)); } // 创建表示例 stmt.executeUpdate("CREATE TABLE IF NOT EXISTS users (" + "id SERIAL PRIMARY KEY," + "name VARCHAR(50) NOT NULL)"); } catch (SQLException e) { e.printStackTrace(); } ``` #### 四、常见问题解决 1. **连接失败** - 检查防火墙是否开放 5432 端口 - 确认 `pg_hba.conf` 文件已配置客户端访问权限 2. **驱动未加载** - 旧版本 JDBC 需显式加载驱动:`Class.forName("org.postgresql.Driver");` 3. **SSL 警告** - 在 URL 后添加参数:`?ssl=true` 或 `?sslmode=require` > **注意事项** > - 使用 `try-with-resources` 确保自动关闭连接(Java 7+) > - 生产环境应将密码存储在安全配置中(如环境变量) > - 使用连接池(如 HikariCP)提升性能[^1][^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值