8.2. 使用驱动

8.2.1. 装入 JDBC

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

import java.sql.*;

Important: 不要输入 postgresql 包.如果这样做,你的源码将不能编译, 因为 javac 会被你搞糊涂。

8.2.2. 装载驱动

在你试图与数据库连接之前,你需要装载驱动. 有两种方法,那种更好取决于你使用的代码.

在第一种方法里,你的代码用 Class.forName() 方法显式装载驱动.对于 Postgres,你要用:

Class.forName("org.postgresql.Driver");
这样将装载驱动,并且在装载时,驱动将自动与 JDBC 注册自己.

注意: forName() 方法可能抛出一个 ClassNotFoundException ,所以如果驱动不可获得时你需要捕获它.

这是最常用的方法,但是把你的代码限制于 Postgres 专用. 如果你的代码以后还要访问其他数据库,并且你不想使用 任何 Postgres 相关的扩展, 那么还有第二种方法可用.

第二种方法把驱动做为参数在 JVM启动时传递给它,使用 -D参数.比如:

java -Djdbc.drivers=org.postgresql.Driver example.ImageViewer
在这个例子里, JVM将试图把驱动作为它的初始化的一部分装载. 一旦完成,启动ImageViewer

现在这个方法更好一点,因为它允许你的代码用于其他数据库, 而不用重新编译代码.唯一要修改的东西是 URL,我们下面要提到.

最后一件事情.当你的代码试图打开一个Connection, 而你收到一个抛出的 No driver available SQLException 例外,这可能是因为驱动不在 class path (类路径)里,或者参数值不正确.

8.2.3. 与数据库联接

JDBC 里,数据库是用URL (Uniform Resource Locator)(统一资源定位器)表示的. 在 Postgres里, 这可以由下面几种格式之一表示:

这里:

host

服务器的主机名.缺省是 "localhost".

port

服务器监听的端口号.缺省时是 Postgres 标准的端口号(5432).

database

数据库名.

要联接(数据库),你需要从 JDBC获取一个 Connection 实例. 要做这些,你要使用 DriverManager.getConnection()方法:

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

8.2.4. 关闭联接

要关闭数据库联接,只需要对 Connection 调用 close()方法:

db.close();