设置 JDBC 驱动程序
本节介绍在编写或运行使用 JDBC 接口的程序之前需要采取的步骤。
获取驱动程序
可以在 PostgreSQL® JDBC 网站 上下载驱动程序的预编译版本。
或者,您可以从源代码构建驱动程序,但只有在您要更改源代码时才需要这样做。要构建 JDBC 驱动程序,您需要 gradle 和 JDK(目前至少需要 jdk1.8)。
如果您安装了多个 Java 编译器,maven 将使用路径上的第一个编译器。要使用不同的编译器,请将 JAVA_HOME
设置为要使用的 Java 版本。例如,要使用与默认值不同的 JDK,这可能有效
JAVA_HOME=/usr/local/jdk1.8.0_45
要编译驱动程序,只需在顶级目录中运行 gradlew assemble
或 gradlew build
(如果您想运行测试)。
注意
如果您想跳过测试执行,请添加选项
-DskipTests
。编译后的驱动程序将放置在pgjdbc/build/libs/postgresql-MM.nn.pp.jar
中
其中 MM 是主版本号,nn 是次版本号,pp 是补丁版本号。JDBC3 及更低版本的版本可以在 这里 找到。
这是一个关于如何构建驱动程序的简要概述。更详细的信息可以在 github 仓库 中找到。
尽管 JDBC 驱动程序应该使用 Gradle 构建,但在无法使用 Gradle 的情况下,例如,在为发行版构建 pgJDBC 时,pgJDBC Gradle 构建提供了一个方便的源代码发布工件 *-src.tar.gz
- 一个基于 Maven 的项目。基于 Maven 的项目包含一个具有完整功能的 JDBC 驱动程序版本,可以在生产中使用,并且仍然可以在 Maven 构建环境中有效地构建。基于 Maven 的项目是用 gradlew -d :postgresql:sourceDistribution -Prelease
创建的。生成的 *-src.tar.gz
可以在 pgjdbc/build/distributions/
目录中找到。JDBC 驱动程序可以从基于 Maven 的项目中使用 mvn package 构建,或者在需要跳过测试时,使用 mvn -DskipTests package
构建。源文件 *-src.tar.gz
在 Maven 中央仓库 中发布。
设置类路径
要使用驱动程序,需要将名为 postgresql-MM.nn.pp.jar
的 JAR 存档包含在类路径中,方法是将其放在 CLASSPATH
环境变量中,或者在 java 命令行上使用标志。
例如,假设我们有一个使用 JDBC 驱动程序访问数据库的应用程序,并且该应用程序安装为 /usr/local/lib/myapp.jar
。PostgreSQL® JDBC 驱动程序安装为 /usr/local/pgsql/share/java/postgresql-MM.nn.pp.jar
。要运行应用程序,我们将使用
export CLASSPATH=/usr/local/lib/myapp.jar:/usr/local/pgsql/share/java/postgresql-42.5.0.jar:. java MyApp
当前的 Java 应用程序可能会使用 maven、gradle 或其他一些包管理器。 使用此搜索 最新 jar 包以及如何在项目中包含它们。
从应用程序内部加载驱动程序在 初始化驱动程序 中介绍。
为 JDBC 准备数据库服务器
默认情况下,Java 不支持 Unix 套接字,因此必须配置 PostgreSQL® 服务器以允许 TCP/IP 连接。从服务器版本 8.0 开始,允许来自 localhost
的 TCP/IP 连接。要允许连接到环回接口以外的其他接口,您必须修改 postgresql.conf
文件的 listen_addresses
设置。
确保服务器正确监听 TCP/IP 连接后,下一步是验证用户是否被允许连接到服务器。客户端身份验证在 pg_hba.conf
中设置。有关详细信息,请参阅 PostgreSQL® 的主要 文档。
创建数据库
在创建通过 JDBC 访问的数据库时,选择合适的编码对于您的数据至关重要。许多其他客户端接口并不关心您发送和接收的数据,并允许您执行不恰当的操作,但 Java 确保您的数据被正确编码。不要使用使用 SQL_ASCII
编码的数据库。这不是真正的编码,一旦您存储不符合七位 ASCII 字符集的数据,就会遇到问题。如果您不知道您的编码将是什么,或者不确定要存储什么,UNICODE
编码是一个合理的默认选择。