Chapter 31. JDBC 接口

Table of Contents
31.1. 設置 JDBC 驅動
31.1.1. 獲取驅動
31.1.2. 設置類路徑
31.1.3. JDBC準備數據庫服務器
31.2. 初始化驅動
31.2.1. 裝入 JDBC
31.2.2. 裝載驅動
31.2.3. 與數據庫聯接
31.2.4. 關閉聯接
31.3. 發出查詢和處理結果
31.3.1. 基于一個遊標獲取結果
31.3.2. 使用 StatementPreparedStatement 接口
31.3.3. 使用ResultSet(結果集)接口
31.4. 執行更新
31.5. 調用存儲過程
31.5.1. 使用 CallableStatement 接口
31.5.2. 從個存儲過程裡獲取 ResultSet
31.6. 創建和更改數據庫對象
31.7. 存儲二進制數據
31.8. PostgreSQLJDBC API的擴展
31.8.1. 訪問這些擴展
31.8.2. 幾何數據類型
31.8.3. 大對象
31.9. 在一個多線程或服務器小應用(serverlet)環境裡使用驅動
31.10. 連接池和數據源
31.10.1. 概述
31.10.2. 應用服務器:ConnectionPoolDataSource
31.10.3. 應用:DataSource
31.10.4. 數據源和 JNDI
31.11. 深入閱讀

JDBC 是 Java 1.1 及以後的核心 API。 它為 SQL 兼容的數據庫提供了一個標準的接口集合。

PostgreSQL 提供了 類型 4 JDBC 驅動。 類型 4 表明該驅動是用純 Java 書寫的, 並且與數據庫之間使用數據庫自己的網絡協議通訊。因此,驅動是平台無關的。一旦編譯,該驅動可以用于任意平台。

本章並不想作為完整的 JDBC 編程的指導,但應該能幫你走出第一步。 更多信息請參考標準 JDBC API 文檔。 同樣,讀一下包含在源代碼裡的例子。

31.1. 設置 JDBC 驅動

本節描述你在開始書寫或者運行使用 JDBC 接口的程序之前需要採取的步驟。

31.1.1. 獲取驅動

預編譯好的驅動通常可以在 PostgreSQL JDBC 站點找到。

另外你可以直接從源程序中制作驅動。盡管你只有在自己改動了驅動的代碼情況下才需要這麼做。 相關的細節請參考PostgreSQL安裝指導。在安裝完成後,驅動應該在 PREFIX/share/java/postgresql.jar。 生成的驅動應該是為你運行的 Java 版本制作的。如果你用 1.1 JDK 制作, 那麼你制作了一個支持 JDBC 1 規範的驅動,如果你用 Java 2 JDK(比如, JDK 1.2 或者 JDK 1.3),你將制作一個支持 JDBC 2 規範的版本, 而如果你用 1.4 JDK 制作,那麼你將制作一個支持 JDBC 3 規範的版本。

31.1.2. 設置類路徑

要使用驅動,它的 JAR 歸檔(如果你從源程序制作,那麼名字叫 postgresql.jar,否則它很可能叫 pg7.4jdbc1.jarpg7.4jdbc2.jarpg7.4jdbc3.jar -- 分別用于JDBC 1, JDBC 2,和 JDBC 3 版本)必須包含在類路徑裡, 你要麼是把路徑放到 CLASSPATH 環境變量裡,要麼是使用 java 命令行上的標記。

比如,假設我有一個使用 JDBC 驅動訪問數據庫的應用, 該應用安裝在 /usr/local/lib/myapp.jar。 PostgreSQL JDBC 驅動安裝在/usr/local/pgsql/share/java/postgresql.jar。要運行應用, 我可以用︰

export CLASSPATH=/usr/local/lib/myapp.jar:/usr/local/pgsql/share/java/postgresql.jar:.
java MyApp

在應用裡裝載驅動的內容在 Section 31.2 裡介紹。

31.1.3. 為 JDBC準備數據庫服務器

因為 Java 只使用 TCP/IP 聯接, 所以 PostgreSQL 服務器必須配置成接受 TCP/IP 聯接,我們可以通過在 postgresql.conf 文件裡設置 tcpip_socket = true 或者啟動 postmaster 的時候帶-i參數實現這個目的。

同樣,在 pg_hba.conf 文件裡的客戶端認證設置也要配置好。 請參考 Chapter 19 獲取細節。 JDBC 驅動支持 trustidentpasswordmd5crypt 認證方式。