任何使用 JDBC 的源程序 都需要输入 java.sql 包,用:
import java.sql.*;
Important: 不要输入 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 例外,这可能是因为驱动不在 class path (类路径)里,或者参数值不正确.
在 JDBC 里,数据库是用URL (Uniform Resource Locator)(统一资源定位器)表示的. 在 PostgreSQL里, 这可以由下面几种格式之一表示:
jdbc:postgresql:database
jdbc:postgresql://host/database
jdbc:postgresql://host:port/database
这里:
服务器的主机名.缺省是 "localhost".
服务器监听的端口号. 缺省时是PostgreSQL标准的端口号(5432).
数据库名.
要联接(数据库),你需要从 JDBC获取一个 Connection 实例. 要做这些,你要使用 DriverManager.getConnection()方法:
Connection db = DriverManager.getConnection(url, username, password);