?? jdbctm 指南:入門.txt
字號:
作者:jeru
日期:2000-12-9 19:00:08
本簡介是從《JDBCTM Database Access from JavaTM: A Tutorial and Annotated Reference 》這本書中摘引來的。
JavaSoft 目前正在準備這本書。這是一本教程,同時也是 JDBC 的重要參考手冊,它將作為 Java 系列的組成部份在
1997 年春季由 Addison-Wesley 出版公司出版。
1.1 什么是 JDBCTM?
JDBCTM 是一種用于執行 SQL 語句的 JavaTM API(有意思的是,JDBC 本身是個商標名而不是一個縮寫字;然而,JDBC
常被認為是代表 “Java 數據庫連接 (Java Database Connectivity)”)。它由一組用 Java 編程語言編寫的類和接口
組成。JDBC 為工具/數據庫開發人員提供了一個標準的 API,使他們能夠用純 Java API 來編寫數據庫應用程序。
有了 JDBC,向各種關系數據庫發送 SQL 語句就是一件很容易的事。換言之,有了 JDBC API,就不必為訪問 Sybase 數
據庫專門寫一個程序,為訪問 Oracle 數據庫又專門寫一個程序,為訪問 Informix 數據庫又寫另一個程序,等等。您只
需用 JDBC API 寫一個程序就夠了,它可向相應數據庫發送 SQL 語句。而且,使用 Java 編程語言編寫的應用程序,就
無須去憂慮要為不同的平臺編寫不同的應用程序。將 Java 和 JDBC 結合起來將使程序員只須寫一遍程序就可讓它在任何
平臺上運行。
Java 具有堅固、安全、易于使用、易于理解和可從網絡上自動下載等特性,是編寫數據庫應用程序的杰出語言。所需要的
只是 Java 應用程序與各種不同數據庫之間進行對話的方法。而 JDBC 正是作為此種用途的機制。
JDBC 擴展了 Java 的功能。例如,用 Java 和 JDBC API 可以發布含有 applet 的網頁,而該 applet 使用的信息可能來
自遠程數據庫。企業也可以用 JDBC 通過 Intranet 將所有職員連到一個或多個內部數據庫中(即使這些職員所用的計算機
有 Windows、 Macintosh 和 UNIX 等各種不同的操作系統)。隨著越來越多的程序員開始使用 Java 編程語言,對從 Java
中便捷地訪問數據庫的要求也在日益增加。
MIS 管理員們都喜歡 Java 和 JDBC 的結合,因為它使信息傳播變得容易和經濟。企業可繼續使用它們安裝好的數據庫,并
能便捷地存取信息,即使這些信息是儲存在不同數據庫管理系統上。新程序的開發期很短。安裝和版本控制將大為簡化。程
序員可只編寫一遍應用程序或只更新一次,然后將它放到服務器上,隨后任何人就都可得到最新版本的應用程序。對于商務
上的銷售信息服務, Java 和 JDBC 可為外部客戶提供獲取信息更新的更好方法。
1.1.1 JDBC 的用途是什么?
簡單地說,JDBC 可做三件事:
與數據庫建立連接,
發送 SQL 語句,
處理結果。
下列代碼段給出了以上三步的基本示例:
Connection con = DriverManager.getConnection (
"jdbc:odbc:wombat", "login", "password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
while (rs.next()) {
int x = rs.getInt("a");
String s = rs.getString("b");
float f = rs.getFloat("c");
}
1.1.2 JDBC 是一種低級 API ,是高級 API 的基礎
JDBC 是個“低級”接口,也就是說,它用于直接調用 SQL 命令。在這方面它的功能極佳,并比其它的數據庫連接 API 易
于使用,但它同時也被設計為一種基礎接口,在它之上可以建立高級接口和工具。高級接口是“對用戶友好的”接口,它使
用的是一種更易理解和更為方便的 API,這種 API 在幕后被轉換為諸如 JDBC 這樣的低級接口。在編寫本文時,正在開發
兩種基于 JDBC 的高級 API:
一種用于 Java 的嵌入式 SQL。至少已經有一個提供者計劃編寫它。DBMS 實現 SQL:一種專門設計來與數據庫聯合使用的
語言。JDBC 要求 SQL 語句必須作為 String 傳給 Java 方法。相反,嵌入式 SQL 預處理器允許程序員將 SQL 語句直接與
Java 混在一起使用。例如,可在 SQL 語句中使用 Java 變量,用以接受或提供 SQL 值。然后,嵌入式 SQL 預處理器將通
過 JDBC 調用把這種 Java/SQL 的混合物轉換為 Java。
關系數據庫表到 Java 類的直接映射。JavaSoft 和其它提供者都聲稱要實現該 API。在這種“對象/關系”映射中,表中的
每行對應于類的一個實例,而每列的值對應于該實例的一個屬性。于是,程序員可直接對 Java 對象進行操作;存取數據所
需的 SQL 調用將在“掩蓋下”自動生成。此外還可提供更復雜的映射,例如將多個表中的行結合進一個 Java 類中。
隨著人們對 JDBC 的興趣日益增漲,越來越多的開發人員一直在使用基于 JDBC 的工具,以使程序的編寫更加容易。程序員
也一直在編寫力圖使最終用戶對數據庫的訪問變得更為簡單的應用程序。例如,應用程序可提供一個選擇數據庫任務的菜單。
任務被選定后,應用程序將給出提示及空白供填寫執行選定任務所需的信息。所需信息輸入后,應用程序將自動調用所需的
SQL 命令。在這樣一種程序的協助下,即使用戶根本不懂 SQL 的語法,也可以執行數據庫任務。
1.1.3 JDBC 與 ODBC 和其它 API 的比較
目前,Microsoft 的 ODBC(開放式數據庫連接)API 可能是使用最廣的、用于訪問關系數據庫的編程接口。它能在幾乎所
有平臺上連接幾乎所有的數據庫。為什么 Java 不使用 ODBC?
對這個問題的回答是:Java 可以使用 ODBC,但最好是在 JDBC 的幫助下以 JDBC-ODBC 橋的形式使用,這一點我們稍后再
說。現在的問題已變成:“為什么需要 JDBC”? 回答如下:
ODBC 不適合直接在 Java 中使用,因為它使用 C 語言接口。從 Java 調用本地 C 代碼在安全性、實現、堅固性和程序的
自動移植性方面都有許多缺點。
從 ODBC C API 到 Java API 的字面翻譯是不可取的。例如,Java 沒有指針,而 ODBC 卻對指針用得很廣泛(包括很容易
出錯的指針 "void *")。您可以將 JDBC 想象成被轉換為面向對象接口的 ODBC,而面向對象的接口對 Java 程序員來說較
易于接收。
ODBC 很難學。它把簡單和高級功能混在一起,而且即使對于簡單的查詢,其選項也極為復雜。相反,JDBC 盡量保證簡單功
能的簡便性,而同時在必要時允許使用高級功能。
啟用“純 Java ”機制需要象 JDBC 這樣的 Java API。如果使用 ODBC,就必須手動地將 ODBC 驅動程序管理器和驅動程序
安裝在每臺客戶機上。如果完全用 Java 編寫 JDBC 驅動程序則 JDBC 代碼在所有 Java 平臺上(從網絡計算機到大型機)
都可以自動安裝、移植并保證安全性。
總之,JDBC API 對于基本的 SQL 抽象和概念是一種自然的 Java 接口。它建立在 ODBC 上而不是從零開始。因此,熟悉
ODBC 的程序員將發現 JDBC 很容易使用。JDBC 保留了 ODBC 的基本設計特征;事實上,兩種接口都基于 X/Open SQL CLI
(調用級接口)。它們之間最大的區別在于:JDBC 以 Java 風格與優點為基礎并進行優化,因此更加易于使用。
最近,Microsoft 又引進了 ODBC 之外的新 API: RDO、 ADO 和 OLE DB。這些設計在許多方面與 JDBC 是相同的,即它們
都是面向對象的數據庫接口且基于可在 ODBC 上實現的類。但在這些接口中,我們未看見有特別的功能使我們要轉而選擇它
們來替代 ODBC,尤其是在 ODBC 驅動程序已建立起較為完善的市場的情況下。它們最多也就是在 ODBC 上加了一種裝飾而
已。這并不是說 JDBC 不需要從其最初的版本再發展了;然而,我們覺得大部份的新功能應歸入諸如前一節中所述的對象/
關系映射和嵌入式 SQL 這樣的高級 API。
1.1.4 兩層模型和三層模型
JDBC API 既支持數據庫訪問的兩層模型,同時也支持三層模型。
在兩層模型中,Java applet 或應用程序將直接與數據庫進行對話。這將需要一個 JDBC 驅動程序來與所訪問的特定數據庫
管理系統進行通訊。用戶的 SQL 語句被送往數據庫中,而其結果將被送回給用戶。數據庫可以位于另一臺計算機上,用戶
通過網絡連接到上面。這就叫做客戶機/服務器配置,其中用戶的計算機為客戶機,提供數據庫的計算機為服務器。網絡可
以是 Intranet(它可將公司職員連接起來),也可以是 Internet。
在三層模型中,命令先是被發送到服務的“中間層”,然后由它將 SQL 語句發送給數據庫。數據庫對 SQL 語句進行處理并
將結果送回到中間層,中間層再將結果送回給用戶。MIS 主管們都發現三層模型很吸引人,因為可用中間層來控制對公司數
據的訪問和可作的的更新的種類。中間層的另一個好處是,用戶可以利用易于使用的高級 API,而中間層將把它轉換為相應
的低級調用。最后,許多情況下三層結構可提供一些性能上的好處。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -