8.2. 使用驱动 #
8.2.1. 导入 JDBC #
任何使用 JDBC 的源文件都需要导入
java.sql 包,使用:
import java.sql.*;
重要
不要导入 org.postgresql 包。如果你这样做,你的源代码将无法编译,因为
javac 会产生混淆。
8.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,那么这可能是驱动不在类路径中,或者参数中的值不正确造成的。
8.2.3. 连接到数据库 #
在 JDBC 中,数据库由一个 URL(统一资源定位符)表示。对于 PostgreSQL,它采用下列形式之一:
jdbc:postgresql:
databasejdbc:postgresql://
host/databasejdbc:postgresql://
host:port/database
其中:
-
host 服务器的主机名。默认为
localhost。-
port 服务器监听的端口号。默认为 PostgreSQL 的标准端口号(5432)。
-
database 数据库名。
要建立连接,你需要从
JDBC 获得一个 Connection 实例。为此,你可以使用 DriverManager.getConnection() 方法:
Connection db = DriverManager.getConnection(url, username, password);