Chapter 8. JDBC 接口

Table of Contents
8.1. 设置 JDBC 驱动
8.1.1. 制作驱动
8.1.2. 设置类路径
8.1.3. JDBC准备数据库
8.2. 使用驱动
8.2.1. 装入 JDBC
8.2.2. 装载驱动
8.2.3. 与数据库联接
8.2.4. 关闭联接
8.3. 发出查询和处理结果
8.3.1. 使用 Statement 接口
8.3.2. 使用ResultSet(结果集)接口
8.4. 执行更新
8.5. 使用大对象
8.6. PostgreSQLJDBC API的扩展
8.6.1. 访问这些扩展
8.6.2. 几何数据类型
8.6.3. 大对象
8.6.4. 对象的串行化
8.7. 在一个多 Threaded (线程) 或 Servlet (服务器小应用)环境里使用驱动
8.8. 深入阅读

作者: 由 Peter T. Mount ()执笔,他是 JDBC 驱动的作者.

JDBC 是 Java 1.1 及以后的核心 API. 它为 SQL 兼容的数据库提供了一个标准的接口集合.

Postgres 提供了 类型 4 JDBC 驱动. 类型 4 表明该驱动是用纯 Java 书写的,并且与数据库之间使用数据库自己的网 络协议通讯.因此,驱动是平台无关的.一旦编译,该驱动可以用于任意平台.

本章并不想作为完整的 JDBC 编程的指导,但应该能帮你走出第一步. 更多信息请参考标准 JDBC API 文档. 同样,读一下包含在源代码里的例子.其中的基本例子在这里使用.

8.1. 设置 JDBC 驱动

8.1.1. 制作驱动

预编译好的驱动通常可以在 PostgreSQL JDBC 站点 找到.我们在这里描述如何手工制作 驱动.

PostgreSQL 版本 7.1 开始, JDBC 驱动使用 Ant 制作, Ant 是一种用于制作基于 Java 的包的特殊工具. 你应该在开始制作之前先从 Ant网站下载并安装它. 预编译好的 Ant 版本通常设置成 读取当前用户的家目录里 .antrc 文件进行 配置.比如,如果要使用与缺省不同的 JDK, 下面这些东西可能就行了∶

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

要制作驱动,给你的 configure 命令行增加 --with-java 选项,就是∶

$ ./configure --prefix=xxx --with-java ...
这样,在你执行 gmakegmake install 命令的时候将会把驱动和 PostgreSQL 包的其它部分一起制作. 如果你只想制作驱动,而不想制作 PostgreSQL 其它部分,进入 src/interfaces/jdbc 然后在那里执行相应的 make 命令.请参考 PostgreSQL 安装指导获取更多有关 配置和制作过程的信息.

注意: 请不要使用直接调用 javac 的方法制作, 因为驱动使用一些动态装载的技巧一提高性能,而 javac 是无法处理这些事情的. 也不要试图直接运行 ant,因为一些配置 信息是通过制作文件(makefile)传递的.如果不提供这些配置 参数而直接运行 ant,生成的将是破损 的驱动.

8.1.2. 设置类路径

要使用驱动,它的 jar 归档 postgresql.jar 必须包含在类路径里,你要么是把路径放到 CLASSPATH 环境变量里,要么是使用 java 命令行上的标记. 缺省时,jar 归档安装在 /usr/local/pgsql/share/java 目录里. 如果你在运行 configure 的时候使用了 --prefix 选项,那么你的驱动可能在不同的目录里.

比如,我有一个使用 JDBC 驱动的应用,该应用访问一个存有天文对象的大数据库. 我的应用已经写好了,并且 JDBC 驱动 安装在 /usr/local/lib 目录,而 Java JDK 安装在 /usr/local/jdk1.1.6.要运行应用, 我可以用∶

export CLASSPATH=/usr/local/lib/finder.jar(1):/usr/local/pgsql/share/java/postgresql.jar:.
java uk.org.retep.finder.Main
(1)
finder.jar 里面包含我的应用.

在应用里装载驱动的内容在 Section 8.2 里介绍.

8.1.3. 为 JDBC准备数据库

因为 Java 只能使用 TCP/IP 联接, 所以 Postgres服务器 必须配置成接受 TCP/IP 联接,也就是启动 postmaster 的时候 必须带-i参数.

同样,在 pg_hba.conf 文件里的 客户端认证设置也要配置好. 请参考管理员手册获取细节. JDBC 驱动支持 trust,ident,password 和 crypt 认证方式.