31.2. 初始化驅動

本節描述如何在你的程序裡裝載和初始化 JDBC 驅動。

31.2.1. 裝入 JDBC

任何使用 JDBC 的源程序 都需要輸入 java.sql 包,用:

import java.sql.*;

注意: 不要輸入 org.postgresql 包。如果這樣做,你的源碼將不能編譯, 因為 javac 會被你搞糊塗。

31.2.2. 裝載驅動

在你試圖與數據庫連接之前,你需要裝載驅動。 有兩種方法,那種更好取決于你使用的代碼。

在第一種方法裡,你的代碼用 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 例外, 這可能是因為驅動不在類路徑裡,或者參數值不正確。

31.2.3. 與數據庫聯接

JDBC 裡,數據庫是用URL (Uniform Resource Locator)(統一資源定位器)表示的。 在 PostgreSQL裡,這可以由下面幾種格式之一表示:

參數的含義如下:

host

服務器的主機名。缺省是 localhost。要想聲明一個 IPv6 的地址,你必須把 host 參數用方括弧包圍起來,像這樣:

jdbc:postgresql://[::1]:5740/accounting

port

服務器監聽的端口號。 缺省時是PostgreSQL標準的端口號(5432)。

database

數據庫名。

要聯接(數據庫),你需要從 JDBC 獲取一個 Connection 實例。 要做這些,你用 DriverManager.getConnection() 方法:

Connection db = DriverManager.getConnection(url, username, password);

31.2.4. 關閉聯接

要關閉數據庫聯接,只需要對 Connection 調用 close() 方法:

db.close();