使用 java.sql.DriverManager 创建连接

要使用 java.sql.DriverManager 进行连接,你需要一个 JDBC URL 来连接到你的数据库。JDBC URL 是特定于数据库的,但它们都是表单

jdbc:<subprotocol>:<subname>

<subprotocol> 标识驱动程序或数据库(例如 postgresqlmysqlfirebirdsql 等),<subname> 是子协议特定的。

你需要检查数据库和 JDBC 驱动程序的文档,以获取驱动程序的特定 URL 子协议和格式。

使用 url jdbc:somedb://localhost/foobar 创建与数据库的连接的简单示例:

try (Connection connection = DriverManager.getConnection(
        "jdbc:somedb://localhost/foobar", "anna", "supersecretpassword")) {
    // do something with connection
}

我们在这里使用 try-with-resources ,因此即使发生异常,连接也会在完成后自动关闭。

Version <= 4

在 Java 6(JDBC 4.0)和更早版本中,try-with-resources 不可用。在这些版本中,你需要使用 finally 块来显式关闭连接:

Connection connection = DriverManager.getConnection(
        "jdbc:somedb://localhost/foobar", "anna", "supersecretpassword");
try {
    // do something with connection
} finally {
    // explicitly close connection
    connection.close();
}

Version < 4

JDBC 4.0(Java 6)引入了自动驱动程序加载的概念。如果使用 Java 5 或更早版本,或者未使用 JDBC 4 支持的旧 JDBC 驱动程序,则需要显式加载驱动程序:

Class.forName("org.example.somedb.jdbc.Driver");

在进行任何连接之前,此行必须在程序中(至少)发生一次。

即使在使用 JDBC 4.0 的 Java 6 及更高版本中,也可能需要显式加载驱动程序:例如,在驱动程序未加载到容器中的 Web 应用程序中,但作为 Web 应用程序的一部分。

或者,你也可以提供 Properties 对象进行连接:

Properties props = new Properties();
props.setProperty("user", "anna");
props.setProperty("password", "supersecretpassword");
// other, database specific, properties
try (Connection connection = DriverManager.getConnection(
        "jdbc:somedb://localhost/foobar", props)) {
    // do something with connection
}

甚至没有属性,例如,如果数据库不需要用户名和密码:

try (Connection connection = DriverManager.getConnection(
        "jdbc:somedb://localhost/foobar")) {
    // do something with connection
}