- JDBC 教程
- JDBC - 首頁
- JDBC - 簡介
- JDBC - SQL 語法
- JDBC - 環境
- JDBC - 示例程式碼
- JDBC - 驅動程式型別
- JDBC - 連線
- JDBC - 語句
- JDBC - 結果集
- JDBC - 資料型別
- JDBC - 事務
- JDBC - 異常
- JDBC - 批次處理
- JDBC - 儲存過程
- JDBC - 資料流
- JDBC - RowSet
- JDBC - 複製資料庫
- JDBC - ACID 屬性
- JDBC - 連線池
- JDBC 示例
- JDBC - 建立資料庫
- JDBC - 選擇資料庫
- JDBC - 刪除資料庫
- JDBC - 建立表
- JDBC - 刪除表
- JDBC - 插入記錄
- JDBC - 選擇記錄
- JDBC - 更新記錄
- JDBC - 刪除記錄
- JDBC - WHERE 子句
- JDBC - LIKE 子句
- JDBC - 資料排序
- JDBC 有用資源
- JDBC - 常見問題解答
- JDBC - 快速指南
- JDBC - 有用資源
- JDBC - 討論
- 有用 - Java 教程
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 - 示例程式碼教程。