| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 31. JDBC 接口 | Fast Forward | Next |
本節描述如何在你的程序裡裝載和初始化 JDBC 驅動。
任何使用 JDBC 的源程序 都需要輸入 java.sql 包,用:
import java.sql.*;
注意: 不要輸入 org.postgresql 包。如果這樣做,你的源碼將不能編譯, 因為 javac 會被你搞糊塗。
在你試圖與數據庫連接之前,你需要裝載驅動。 有兩種方法,那種更好取決于你使用的代碼。
在第一種方法裡,你的代碼用 Class.forName() 方法明確地裝載驅動。對于 PostgreSQL,你要用:
Class.forName("org.postgresql.Driver");這樣將裝載驅動,並且在裝載時,驅動將自動與 JDBC 注冊自己。
注意: forName() 方法可能拋出一個 ClassNotFoundException,所以如果驅動不可獲得時你需要捕獲它。
這是最常用的方法,但是把你的代碼限制于 PostgreSQL 專用。 如果你的代碼以後還要訪問其他數據庫,並且你不想使用任何 PostgreSQL 相關的擴展, 那麼還有第二種方法可用。
第二種方法把驅動做為參數在 JVM 啟動時傳遞給它,使用 -D參數。比如:
java -Djdbc.drivers=org.postgresql.Driver example.ImageViewer
在這個例子裡,JVM 將試圖把驅動作為它的初始化的一部分裝載。 一旦完成,啟動ImageViewer。
現在這個方法更好一點,因為它允許你的代碼用于其他數據庫, 而不用重新編譯代碼。唯一要修改的東西是 URL,我們下面要提到。
最後一件事情。當你的代碼試圖打開一個Connection, 而你收到一個拋出的 No driver available SQLException 例外, 這可能是因為驅動不在類路徑裡,或者參數值不正確。
在 JDBC 裡,數據庫是用URL (Uniform Resource Locator)(統一資源定位器)表示的。 在 PostgreSQL裡,這可以由下面幾種格式之一表示:
jdbc:postgresql:database
jdbc:postgresql://host/database
jdbc:postgresql://host:port/database
參數的含義如下:
服務器的主機名。缺省是 localhost。要想聲明一個 IPv6 的地址,你必須把 host 參數用方括弧包圍起來,像這樣:
jdbc:postgresql://[::1]:5740/accounting
服務器監聽的端口號。 缺省時是PostgreSQL標準的端口號(5432)。
數據庫名。
要聯接(數據庫),你需要從 JDBC 獲取一個 Connection 實例。 要做這些,你用 DriverManager.getConnection() 方法:
Connection db = DriverManager.getConnection(url, username, password);