↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本。 PostgreSQL 7.2 已结束支持。 请参阅 当前版本手册.

第 8 章 JDBC 接口

作者

最初由 JDBC 驱动最初的作者 Peter T. Mount()编写。

JDBC 是 Java 1.1 及更高版本的核心 API。它为兼容 SQL 的数据库提供了一组标准接口。

PostgreSQL 提供一个 4 类(type 4)JDBC 驱动。4 类(type 4)表示该驱动用纯 Java 编写,并使用数据库系统自己的网络协议通信。因此,该驱动是平台无关的;一旦编译完成,就可以在任何系统上使用。

本章并不是一份完整的 JDBC 编程指南,但应该能帮助你入门。更多信息请参阅标准的 JDBC API 文档。另外,也可以看看源码中附带的例子。这里使用的是其中的基本示例。

8.1. 设置 JDBC 驱动 #

8.1.1. 获取驱动 #

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

你也可以从源码构建驱动。不过只有在你修改源代码时才应该需要这么做。

从 PostgreSQL 7.1 版开始,JDBC 驱动使用 Ant 构建,这是一种专门用于构建基于 Java 的包的工具。在继续之前,你应该从Ant 网站下载 Ant 并安装。预编译的 Ant 发行版通常会读取当前用户主目录中的 .antrc 文件进行配置。例如,要使用与默认值不同的 JDK,可以这样:

JAVA_HOME=/usr/local/sun-jdk1.3
JAVACMD=$JAVA_HOME/bin/java

要构建驱动,请在你的 configure 命令行中加上 --with-java 选项,例如:

$ ./configure --prefix=xxx --with-java ...

这样,当你执行 make/gmake 和 make/gmake install 命令时,驱动会与 PostgreSQL 包的其余部分一起构建和安装。如果你只想构建驱动而不构建 PostgreSQL 的其余部分,可以进入目录 src/interfaces/jdbc 并在那里执行相应的 make/gmake 命令。关于配置和构建过程的更多信息,请参阅 PostgreSQL 安装说明。

从源码构建驱动时,创建的 jar 文件将名为 postgresql.jar。构建会在 src/interfaces/jdbc/jars 目录中生成该文件。构建出的驱动将针对你正在使用的 Java 版本构建。如果你用 1.1 JDK 构建,会得到一个支持 jdbc1 规范的版本;如果用 Java2 JDK(即 JDK1.2 或 JDK1.3)构建,会得到一个支持 jdbc2 规范的版本。

注意

不要试图通过直接调用 javac 来构建驱动,因为驱动出于性能原因使用了一些动态加载技术,而 javac 无法应对。也不要试图直接运行 ant,因为有些配置信息是通过 makefile 传递的。在不提供这些参数的情况下直接运行 ant 会得到一个有问题的驱动。

8.1.2. 设置类路径 #

要使用该驱动,需要把 jar 归档(如果你是从源码构建的,它名为 postgresql.jar,否则它可能名为 jdbc7.2-1.1.jar 或 jdbc7.2-1.2.jar,分别对应 jdbc1 和 jdbc2 版本)包含在类路径中,可以把它放入 CLASSPATH 环境变量,或者在 java 命令行上使用相应的标志。默认情况下,该 jar 归档安装在 /usr/local/pgsql/share/java 目录中。如果你运行 configure 时使用了 --prefix 选项,或者你使用的二进制发行版把它放在了别的位置,那么它可能在不同的目录中。

例如,我有一个应用程序使用 JDBC 驱动访问一个包含天体数据的大型数据库。该应用程序和 JDBC 驱动都安装在 /usr/local/lib 目录中,而 Java JDK 安装在 /usr/local/jdk1.3.1。要运行该应用程序,我可以使用:

export CLASSPATH=/usr/local/lib/finder.jar(1):/usr/local/pgsql/share/java/postgresql.jar:.
java Finder

(1)

finder.jar 包含 Finder 应用程序。

在应用程序内载入驱动的内容在第 8.2 节中介绍。

8.1.3. 为 JDBC 准备数据库 #

由于 Java 只使用 TCP/IP 连接,必须把 PostgreSQL 服务器配置为接受 TCP/IP 连接。这可以通过在 postgresql.conf 文件中设置 tcpip_socket = true,或者在启动 postmaster 时提供 -i 选项标志来完成。

另外,可能还需要配置 pg_hba.conf 文件中的客户端认证设置。详情请参阅管理员指南。JDBC 驱动支持 trust、ident、password、md5 和 crypt 认证方法。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.