JDBC - 資料庫連線



安裝了相應的驅動程式後,就可以使用 JDBC 建立資料庫連線。

建立 JDBC 連線所涉及的程式設計非常簡單。以下是這四個簡單的步驟:

  • 匯入 JDBC 包 - 在您的 Java 程式中新增 import 語句,以匯入 Java 程式碼中所需的類。

  • 註冊 JDBC 驅動程式 - 此步驟使 JVM 將所需的驅動程式實現載入到記憶體中,以便它可以滿足您的 JDBC 請求。

  • 資料庫 URL 構建 - 這是建立指向您要連線到的資料庫的格式正確的地址。

  • 建立連線物件 - 最後,編寫對 DriverManager 物件的 getConnection( ) 方法的呼叫,以建立實際的資料庫連線。

匯入 JDBC 包

Import 語句告訴 Java 編譯器在哪裡可以找到您在程式碼中引用的類,並且放置在原始碼的開頭。

要使用標準 JDBC 包(允許您在 SQL 表中選擇、插入、更新和刪除資料),請將以下 import 新增到您的原始碼中:

import java.sql.* ;  // for standard JDBC programs
import java.math.* ; // for BigDecimal and BigInteger support

註冊 JDBC 驅動程式

在使用驅動程式之前,必須在程式中註冊它。註冊驅動程式是將 Oracle 驅動程式的類檔案載入到記憶體中的過程,以便可以將其用作 JDBC 介面的實現。

您只需要在程式中執行一次此註冊。您可以透過兩種方式之一註冊驅動程式。

方法一 - Class.forName()

註冊驅動程式最常見的方法是使用 Java 的 Class.forName() 方法,動態地將驅動程式的類檔案載入到記憶體中,這會自動註冊它。此方法是首選方法,因為它允許您使驅動程式註冊可配置且可移植。

以下示例使用 Class.forName( ) 註冊 Oracle 驅動程式:

try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

您可以使用 getInstance() 方法來解決不相容的 JVM,但隨後您必須為另外兩個異常編寫程式碼,如下所示:

try {
   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
catch(IllegalAccessException ex) {
   System.out.println("Error: access problem while loading!");
   System.exit(2);
catch(InstantiationException ex) {
   System.out.println("Error: unable to instantiate driver!");
   System.exit(3);
}

方法二 - DriverManager.registerDriver()

您可以用來註冊驅動程式的第二種方法是使用靜態 DriverManager.registerDriver() 方法。

如果您使用的是非 JDK 相容的 JVM(例如 Microsoft 提供的 JVM),則應使用 registerDriver() 方法。

以下示例使用 registerDriver() 註冊 Oracle 驅動程式:

try {
   Driver myDriver = new oracle.jdbc.driver.OracleDriver();
   DriverManager.registerDriver( myDriver );
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

資料庫 URL 構建

載入驅動程式後,可以使用 DriverManager.getConnection() 方法建立連線。為了便於參考,讓我列出三個過載的 DriverManager.getConnection() 方法:

  • getConnection(String url)

  • getConnection(String url, Properties prop)

  • getConnection(String url, String user, String password)

這裡每種形式都需要一個數據庫 URL。資料庫 URL 是指向資料庫的地址。

構建資料庫 URL 是建立連線時發生的大多數問題所在。

下表列出了常用的 JDBC 驅動程式名稱和資料庫 URL。

RDBMS JDBC 驅動程式名稱 URL 格式
MySQL com.mysql.jdbc.Driver jdbc:mysql://主機名/資料庫名
ORACLE oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@主機名:埠號:資料庫名
DB2 COM.ibm.db2.jdbc.net.DB2Driver jdbc:db2:主機名:埠號/資料庫名
Sybase com.sybase.jdbc.SybDriver jdbc:sybase:Tds:主機名:埠號/資料庫名

URL 格式中所有突出顯示的部分都是靜態的,您只需要根據您的資料庫設定更改其餘部分。

建立連線物件

我們列出了三種 DriverManager.getConnection() 方法的形式來建立連線物件。

使用資料庫 URL、使用者名稱和密碼

getConnection() 最常用的形式要求您傳遞資料庫 URL、使用者名稱密碼

假設您使用的是 Oracle 的 thin 驅動程式,您將為 URL 的資料庫部分指定 host:port:databaseName 值。

如果您在 TCP/IP 地址 192.0.0.1 上有一個主機,主機名為 amrood,並且您的 Oracle 偵聽器配置為偵聽埠 1521,並且您的資料庫名為 EMP,那麼完整的資料庫 URL 將為:

jdbc:oracle:thin:@amrood:1521:EMP

現在,您必須使用適當的使用者名稱和密碼呼叫 getConnection() 方法以獲取 Connection 物件,如下所示:

String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS);

僅使用資料庫 URL

DriverManager.getConnection( ) 方法的第二種形式只需要一個數據庫 URL:

DriverManager.getConnection(String url);

但是,在這種情況下,資料庫 URL 包括使用者名稱和密碼,並具有以下通用形式:

jdbc:oracle:driver:username/password@database

因此,上述連線可以建立如下:

String URL = "jdbc:oracle:thin:username/password@amrood:1521:EMP";
Connection conn = DriverManager.getConnection(URL);

使用資料庫 URL 和 Properties 物件

DriverManager.getConnection( ) 方法的第三種形式需要一個數據庫 URL 和一個 Properties 物件:

DriverManager.getConnection(String url, Properties info);

Properties 物件儲存一組關鍵字-值對。它用於在呼叫 getConnection() 方法期間將驅動程式屬性傳遞給驅動程式。

要建立與前幾個示例相同的連線,請使用以下程式碼:

import java.util.*;

String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
Properties info = new Properties( );
info.put( "user", "username" );
info.put( "password", "password" );

Connection conn = DriverManager.getConnection(URL, info);

關閉 JDBC 連線

在 JDBC 程式的末尾,需要顯式關閉與資料庫的所有連線以結束每個資料庫會話。但是,如果您忘記了,Java 的垃圾回收器將在清理陳舊物件時關閉連線。

依賴垃圾回收,尤其是在資料庫程式設計中,是一種非常糟糕的程式設計實踐。您應該養成始終使用與連線物件關聯的 close() 方法關閉連線的習慣。

為了確保連線已關閉,您可以在程式碼中提供一個“finally”塊。無論是否發生異常,finally 塊始終執行。

要關閉上述開啟的連線,您應該呼叫 close() 方法,如下所示:

conn.close();

顯式關閉連線可以節省 DBMS 資源,這會讓您的資料庫管理員感到高興。

為了更好地理解,我們建議您學習我們的 JDBC - 示例程式碼教程

廣告

© . All rights reserved.