使用 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
}