【正文】
s、 Macintosh 和 UNIX 等各種不同的操作系統(tǒng))。 MIS 管理員們都喜歡 Java 和 JDBC 的結(jié)合,因?yàn)樗剐畔鞑プ兊萌菀缀徒?jīng)濟(jì)。新程序的開發(fā)期很短。程序員可只編寫一遍應(yīng)用程序或只更新一次,然后將它放到服務(wù)器上,隨后任何人就都可得到最新版本的應(yīng)用程序。 ? JDBC 的用途是什么? 簡單地說, JDBC 可做三件事: 與數(shù)據(jù)庫建立連接, 發(fā)送 SQL 語句, 處理結(jié)果。 Statement stmt = ()。 while (()) { int x = getInt(a)。 float f = getFloat(c)。在這方面它的功能極佳,并比其它的數(shù)據(jù)庫連接 API 易于使用,但它同時(shí)也被設(shè)計(jì)為一種基礎(chǔ)接口,在它之上可以建立高級(jí)接口和工具。在編寫本文時(shí),正在開發(fā)兩種基于 JDBC 的高級(jí) API: ? 一種用于 Java 的嵌入式 SQL。 DBMS 實(shí) 現(xiàn) SQL:一種專門設(shè)計(jì)來與數(shù)據(jù)庫聯(lián)合使用的語言。相反,嵌入式 SQL 預(yù)處理器允許程序員將 SQL 語句直接與 Java 混在一起使用。然后,嵌入式 SQL 預(yù)處理器將通過 JDBC 調(diào)用把這種 Java/SQL 的混合物轉(zhuǎn)換為 Java。 JavaSoft 和其它提供者都聲稱要實(shí)現(xiàn)該 API。于是,程序員可直接對(duì) Java 對(duì)象進(jìn)行操作;存取數(shù)據(jù)所需的 SQL 調(diào)用將在“掩蓋下”自動(dòng)生成。 隨著人們對(duì) JDBC 的興趣日益增漲,越來越多的開發(fā)人員一直在使用基于 JDBC 的工具,以使程序的編寫更加容易。例如,應(yīng)用程序可提供一個(gè)選擇數(shù)據(jù)庫任務(wù)的菜單。所需信息輸入后,應(yīng)用程序?qū)⒆詣?dòng)調(diào)用所需的 SQL 命令。 ? JDBC 與 ODBC 和其它 API 的比較 目前, Microsoft 的 ODBC(開放式數(shù)據(jù)庫連接) API 可能是使用最廣的、用于訪問關(guān)系數(shù)據(jù)庫的編程接口。為什么 Java 不使用 ODBC? 對(duì)這個(gè)問題的回答是: Java 可以使用 ODBC,但最好是在 JDBC 的幫助下以JDBCODBC 橋的形式使用。從 Java 調(diào)用本地 C 代碼在安全性、實(shí)現(xiàn)、堅(jiān)固性和程序的自動(dòng)移植性方面都有許多缺點(diǎn)。例如, Java 沒有指針,而 ODBC 卻對(duì)指針用得很廣泛(包括很容易出錯(cuò)的指針 void *)。 ? ODBC 很難學(xué)。相反, JDBC 盡量保證簡單功能的簡便性,而同時(shí)在必要時(shí)允許使用高級(jí)功能。如果使用 ODBC,就必須手動(dòng)地將 ODBC 驅(qū)動(dòng)程序管理器和驅(qū)動(dòng)程序安裝在每臺(tái)客戶機(jī)上。 總之, JDBC API 對(duì)于基本的 SQL 抽象和概念是一種自然的 Java 接口。因此,熟悉 ODBC 的程序員將發(fā)現(xiàn) JDBC 很容易使用。它們之間最大的區(qū)別在于: JDBC以 Java 風(fēng)格與優(yōu)點(diǎn)為基礎(chǔ)并進(jìn)行優(yōu)化,因此更加易于使用。這些設(shè)計(jì)在許多方面與 JDBC 是相同的,即它們都是面向?qū)ο蟮臄?shù)據(jù)庫接口且基于可在 ODBC 上實(shí)現(xiàn)的類。它們最多也就是在 ODBC 上加了一種裝飾而已。 ? 兩層模型和三層模型 JDBC API 既支持?jǐn)?shù)據(jù)庫訪問的兩層模型,同時(shí)也支持三層模型。這將需要一個(gè) JDBC 驅(qū)動(dòng) 程序 來與所訪問的特定數(shù)據(jù)庫管理系統(tǒng)進(jìn)行通訊。數(shù)據(jù)庫可以位于另一臺(tái)計(jì)算機(jī)上,用戶通過網(wǎng)絡(luò)連接到上面。網(wǎng)絡(luò)可以是 Intra(它可將公司職員連接起來),也可以是 Inter。數(shù)據(jù)庫對(duì) SQL 語句進(jìn)行處理并將結(jié)果送回到中間層,中間層再將結(jié)果送回給用戶。中間層的另一個(gè)好處是,用戶可以利用易于使用的高級(jí) API,而中間層將把它轉(zhuǎn)換為相應(yīng)的低級(jí)調(diào)用。 到目前為止,中間層通常都用 C 或 C++ 這類語言來編寫,這些語言執(zhí)行速度較快。這將是一個(gè)很大的進(jìn)步,它使人們可以充分利用 Java 的諸多優(yōu)點(diǎn)(如堅(jiān)固、多線程和安全等特征 )。 ? SQL 的一致性 結(jié)構(gòu)化查詢語言 (SQL) 是訪問關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言 .但是結(jié)構(gòu)化查詢語言(SQL)還沒有形成標(biāo)準(zhǔn)。例如,并非所有的數(shù)據(jù)庫都支持儲(chǔ)存程序或外部連接,那些支持這一功能的數(shù)據(jù)庫又相互不一致。但同時(shí) JDBC API 又必須支持現(xiàn)有的 SQL。這意味著應(yīng)用程序可以使用任意多的 SQL 功能,但它必須冒這樣的風(fēng)險(xiǎn):有可能在某些 DBMS 上出錯(cuò)。 JDBC 處理 SQL 一致性問題的第二種方法是提供 ODBC 風(fēng)格的轉(zhuǎn)義子句。 轉(zhuǎn)義語法為幾個(gè)常見的 SQL 分歧提供了一種標(biāo)準(zhǔn)的 JDBC 語法。 對(duì)于復(fù)雜的應(yīng)用程序, JDBC 用第三種方法來處理 SQL 的一致性問題。 由于 JDBC API 將用作開發(fā)高級(jí)數(shù)據(jù)庫訪問工具和 API 的基礎(chǔ) API,因此它還必須注意其所有上層建筑的一致性。要 使用這一說明,驅(qū)動(dòng)程序至少必須支持 ANSI SQL2 EntryLevel( ANSI SQL2 代表美國國家標(biāo)準(zhǔn)局 1992 年所采用的標(biāo)準(zhǔn)。驅(qū)動(dòng)程序開發(fā)人員可用 JDBC API 所帶的測試工具包來確定他們的驅(qū)動(dòng)程序是否符合這些標(biāo)準(zhǔn)。這些一致性測試將檢查 JDBCAPI 中定義的所有類和方法是否都存在,并盡可能地檢查程序是否具有 SQL Entry Level 功能。但這種一致性定義的確可對(duì) JDBC 實(shí)現(xiàn)提供一定的可信度。 ? JDBC 產(chǎn)品 在編寫本文時(shí),有幾個(gè)基于 JDBC 的產(chǎn)品已開發(fā)完畢或正在開發(fā)中。因此,有關(guān)最新的信息,請查閱 JDBC 的網(wǎng)站,可通過從以下 URL 開始 瀏覽找到: ? JDBC 驅(qū)動(dòng)程序的類型 我們目前所知曉的 JDBC 驅(qū)動(dòng)程序可分為以下四個(gè)種類: JDBCODBC 橋加 ODBC 驅(qū)動(dòng)程序: JavaSoft 橋產(chǎn)品利用 ODBC 驅(qū)動(dòng)程序提供 JDBC 訪問。因此,這種類型的驅(qū)動(dòng)程序最適合于企業(yè)網(wǎng)(這種網(wǎng)絡(luò)上客戶機(jī)的安裝不是主要問題),或者是用 Java 編寫的三層結(jié)構(gòu)的應(yīng)用程序服務(wù)器代 碼。注意,象橋驅(qū)動(dòng)程序一樣,這種類型的驅(qū)動(dòng)程序要求將某些二進(jìn)制代碼加載到每臺(tái)客戶。這種網(wǎng)絡(luò)服務(wù)器中間件能夠?qū)⑺募?Java 客戶機(jī)連接到多種不同的數(shù)據(jù)庫上。通常,這是最為靈活的 JDBC 驅(qū)動(dòng)程序。為了使這些產(chǎn)品也支持 Inter 訪問,它們必須處理 Web 所提出的安全性、通過防火墻的訪問等方面的額外要求。 本地協(xié)議純 Java 驅(qū)動(dòng)程序:這種類型的驅(qū)動(dòng)程序?qū)? JDBC 調(diào)用直接轉(zhuǎn)換為 DBMS 所使用的網(wǎng)絡(luò)協(xié)議。由于許多這樣的協(xié)議都是專用的,因此數(shù)據(jù)庫提供者自己將是主要來源,有幾家提供者已在著手做這件事了。第 2 類驅(qū)動(dòng)程序在直接的純 Java 驅(qū)動(dòng)程序還沒有上市前將會(huì)作為過渡方案來使用。第 4 類驅(qū)動(dòng)程序提供了 Java 的所有優(yōu)點(diǎn),包括自動(dòng)安裝(例如,通過使用 JDBC 驅(qū)動(dòng)程序的 appletapplet 來下載該驅(qū)動(dòng)程序)。 nevertheless, JDBC is often thought of as standing for ``Java Database Connectivity39。.) It consists of a set of classes and interfaces written in the Java programming language. JDBC provides a standard API for tool/database developers and makes it possible to write database applications using a pure Java API. Using JDBC, it is easy to send SQL statements to virtually any relational database. In other words, with the JDBC API, it isn39。t have to worry about writing different applications to run on different platforms. The bination of Java and JDBC lets a programmer write it once and run it anywhere. Java, being robust, secure, easy to use, easy to understand, and automatically downloadable on a work, is an excellent language basis for database applications. What is needed is a way for Java applications to talk to a variety of different databases. JDBC is the mechanism for doing this. JDBC extends what can be done in Java. For example, with Java and the JDBC API, it is possible to publish a web page containing an applet that uses information obtained from a remote database. Or an enterprise can use JDBC to connect all its employees (even if they are using a conglomeration of Windows, Macintosh, and UNIX machines) to one or more internal databases via an intra. With more and more programmers using the Java programming language, the need for easy database access from Java is continuing to grow. MIS managers like the bination of Java and JDBC because it makes disseminating information easy and economical. Businesses can continue to use their installed databases and access information easily even if it is stored on different database management systems. Development time for new a