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();