Redrock Postgres 文档
主页 切换暗/亮/自动模式 切换暗/亮/自动模式 切换暗/亮/自动模式 返回首页

设置 JDBC 驱动程序

本节介绍在编写或运行使用 JDBC 接口的程序之前需要执行的步骤。

获取驱动程序

驱动程序的预编译版本可以从PostgreSQL JDBC网站下载。

或者,可以从源代码生成驱动程序,但只有在对源代码进行更改时才需要执行此操作。要构建 JDBC 驱动程序,您需要 gradle 和 JDK(目前至少为 jdk1.8)。

如果您安装了多个 Java 编译器,maven 将使用路径上的第一个编译器。要使用其他 Java 编译器,可以将环境变量JAVA_HOME设置成你想使用的java版本。例如,要使用与默认值不同的 JDK,这可能有效:

 JAVA_HOME=/usr/local/jdk1.8.0_45

要编译驱动程序,只需运行 gradlew assemblegradlew build,如果您想在顶级目录中运行测试。

如果要跳过测试执行,请添加选项-DskipTests。编译后的驱动程序将放置在pgjdbc/build/libs/postgresql-MM.nn.pp.jar

其中 MM 是主要版本,nn 是次要版本,pp 是补丁版本。可在此处找到 JDBC3 及更低版本的版本。

这是有关如何生成驱动程序的非常简短的概述。更详细的信息可以在github仓库中找到。

尽管 JDBC 驱动程序应该使用 Gradle 构建,但在无法使用 Gradle 的情况下,例如,在为发行版构建 pgJDBC 时,pgJDBC Gradle 构建提供了一个方便的源发布工件 - 一个基于 Maven 的项目。基于 Maven 的项目包含一个具有完整功能的 JDBC 驱动程序版本,该驱动程序可以在生产中使用,并且仍然可以在 Maven 构建环境中有效构建。基于 Maven 的项目是使用 gradlew -d :postgresql:sourceDistribution -Prelease 创建的。然后可以在目录pgjdbc/build/distributions/中找到生产的内容*-src.tar.gz。JDBC 驱动程序可以从基于 Maven 的项目构建,使用 mvn package,或者在跳过测试时,使用 mvn -DskipTests package 构建。源文件*-src.tar.gzMaven 中央仓库中发布。

设置 CLASSPATH

要使用驱动程序,需要将名为的 JAR 归档postgresql-MM.nn.pp.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编码是合理的默认设置。