PostgreSQL Java 教程: 连接到 PostgreSQL 数据库

九月 6, 2024

摘要:在本教程中,您将学习如何从 Java 程序连接到 PostgreSQL 数据库服务器。

目录

创建新数据库

首先,在 Windows 上打开命令提示符,或在类 Unix 系统上打开终端,然后使用psql客户端工具,连接到本地 PostgreSQL 数据库服务器:

psql -U postgres

第二步,创建一个名为sales的新数据库:

CREATE DATABASE sales;

第三步,退出psql

exit

设置 JDK

要开发 Java 程序,您需要在计算机上安装 JDK。要设置 JDK,首先,您访问 Oracle 网站下载最新的 JDK。然后,将其安装在计算机上。

设置很简单,您只需要接受安装程序提供的默认参数即可设置完成。

安装 IntelliJ IDE

我们将使用 IntelliJ IDE。

下载 PostgreSQL JDBC 驱动

要从 Java 程序连接到 PostgreSQL 服务器,您需要 PostgreSQL JDBC 驱动。

您可以在 jdbc.postgresql.org 下载页面上下载最新版本的驱动。下载的文件是一个 jar 文件,例如postgresql-42.7.1.jar

创建新项目

首先,启动 IntelliJ IDE。

接下来,创建一个名为sales的新项目。

然后,右键单击项目名称,并选择 Open Module Settings(打开模块设置)。

之后,选择 Project Settings(项目设置)下的 Libraries(库),并单击 New Project Library(新建项目库)。

最后,选择 PostgreSQL 数据库驱动文件,例如postgresql-42.7.1.jar

创建数据库配置文件

首先,在项目的src目录中,创建一个名为db.properties文件的新文件。

其次,将连接参数添加到db.properties文件中:

db.url=jdbc:postgresql://localhost:5432/sales
db.username=Yourusername
db.password=YourPassword

config.properties中包括了三个连接参数:

  • db.url:PostgreSQL 数据库服务器的 URL。在此示例中,我们连接到本地 PostgreSQL 服务器上的sales数据库,服务器的端口为 5432(默认端口)。
  • db.user:连接到数据库的用户帐户。
  • db.password:用户的密码。

请注意,您需要将YourUsernameYourPassword替换为实际的值。

定义 DatabaseConfig 类

首先,在项目的src目录中,创建一个名为DatabaseConfig.java的新文件。

其次,在DatabaseConfig.java文件中,定义DatabaseConfig类:

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class DatabaseConfig {
    private static final Properties properties = new Properties();

    static {
        try (InputStream input = DatabaseConfig.class.getClassLoader().getResourceAsStream("db.properties")) {
            if (input == null) {
                System.out.println("Sorry, unable to find db.properties");
                System.exit(1);
            }

            // Load the properties file
            properties.load(input);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static String getDbUrl() {
        return properties.getProperty("db.url");
    }

    public static String getDbUsername() {
        return properties.getProperty("db.username");
    }

    public static String getDbPassword() {
        return properties.getProperty("db.password");
    }
}

DatabaseConfig类负责从db.properties文件加载数据库配置。

DatabaseConfig有三个静态方法,来公开数据库配置:

  • getDbUrl() – 返回数据库 URL。
  • getDbUsername() – 返回用户名。
  • getDbPassword() – 返回密码。

创建 DB 类

首先,在项目的src目录中,创建一个名为DB.java文件的新文件。

其次,使用下面代码,定义DB类:

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

public class DB {
    public static Connection connect() throws SQLException {
        try {
            // Get database credentials from DatabaseConfig class
            var jdbcUrl = DatabaseConfig.getDbUrl();
            var user = DatabaseConfig.getDbUsername();
            var password = DatabaseConfig.getDbPassword();

            // Open a connection
            return DriverManager.getConnection(jdbcUrl, user, password);
        } catch (SQLException  e) {
            System.err.println(e.getMessage());
            return null;
        }
    }
}

DB类有一个静态方法connect(),该方法连接到本地 PostgreSQL 服务器上的 sales 数据库。

connect()方法利用DatabaseConfig类加载连接参数,并使用DriverManager类的getConnection()方法建立与数据库的连接。

如果connect()方法成功建立了与 PostgreSQL 的连接,则返回一个Connection对象,否则返回 null。

如果在连接过程中发生任何SQLException异常,该connect()方法将显示异常的详细信息。

创建 Java 程序

首先,在项目的 src 目录中,创建Main.java文件。

其次,使用下面代码,在Main.java文件中定义Main类:

import java.sql.SQLException;

public class Main {
    public static void main(String[] args) {
        try (var connection =  DB.connect()) {
            System.out.println("Connected to the PostgreSQL database.");
        } catch (SQLException e) {
            System.err.println(e.getMessage());
        }
    }
}

Main类的main()函数,通过调用connect()方法,使用DB类连接到本地 PostgreSQL 服务器上的sales数据库。

如果成功建立连接,则显示一条消息,如果发生SQLException异常,则显示错误。

try-with-resources 语句确保即使发生异常也会自动关闭Connection

如果您运行该程序并看到以下输出,则表示该程序已成功连接到 PostgreSQL 服务器:

Connected to the PostgreSQL database.

总结

使用DriverManager.getConnection()方法,来建立与 PostgreSQL 服务器上的数据库的连接。

了解更多

PostgreSQL Java 教程