在 Eclipse 中開(kāi)發(fā) Apache Derby 應用程序![]() |
![]() | 級別: 初級 Gilles Roux (groux@us.ibm.com), 信息管理軟件工程師, IBM 2005 年 2 月 01 日 在開(kāi)發(fā) Apache Derby 應用程序的過(guò)程中需要執行很多任務(wù),例如創(chuàng )建和連接數據庫,編寫(xiě) Java? JDBC 客戶(hù)機應用程序和存儲過(guò)程,以及將最終得到的軟件組件部署到生產(chǎn)環(huán)境。本文旨在發(fā)現如何結合使用各種基于 Eclipse 的 Apache Derby 工具來(lái)簡(jiǎn)化這一開(kāi)發(fā)過(guò)程。 本文的目的是向您展示如何在 Eclipse 集成開(kāi)發(fā)環(huán)境(IDE)中使用幾種不同的工具,例如 Java Development Tools、IBM? DB2? plug-ins for Eclipse 和 IBM integration plug-in for Derby,以便開(kāi)發(fā) Apache Derby 應用程序。 本文將介紹一個(gè)典型 Derby 應用程序的整個(gè)開(kāi)發(fā)周期,從數據庫的創(chuàng )建開(kāi)始,然后經(jīng)歷 JDBC 客戶(hù)機應用程序的開(kāi)發(fā),存儲過(guò)程和函數的開(kāi)發(fā),最后是解決方案的開(kāi)發(fā)。本文還將描述必要時(shí)如何用 DB2 Universal Database (UDB) 數據庫替代 Apache Derby 數據庫。 本文假設您對 Apache Derby 數據庫、Eclipse 平臺和 DB2 plug-ins for Eclipse 有基本的理解。強烈建議您閱讀 參考資料 一節中列出的文章“與 Apache Derby 一起使用 DB2 plug-ins for Eclipse”的兩個(gè)部分。 為了闡明應用程序開(kāi)發(fā)中涉及的各種不同任務(wù),作者 Gilles Roux 將提供關(guān)于如何構建一個(gè)示例應用程序的具體例子和逐步說(shuō)明。 在這個(gè)例子中,您需要開(kāi)發(fā)一個(gè)命令行應用程序來(lái)執行一家書(shū)店的庫存管理。書(shū)店的數據庫存儲了這家書(shū)店擁有的各種書(shū)籍,以及這些書(shū)籍的現有數量。 這個(gè)示例應用程序將允許您訪(fǎng)問(wèn)這些數據,并允許您更改書(shū)籍的數量。例如,如果從一個(gè)供應商那里收到一批書(shū),那么就要使用這個(gè)應用程序來(lái)添加所收到書(shū)籍的數量。如果書(shū)籍的數量超過(guò)或者低于某個(gè)限制,則需要用電子郵件通知管理員,以便其采取必要的行動(dòng)。 Java Development Tools(JDT)是一組內建到 Eclipse 中的插件,為編輯、編譯、調試、執行和部署一般用途的 Java 應用程序提供了一種方法。 DB2 plug-ins for Eclipse 提供了連接到各種數據庫(包括 IBM Cloudscape 和 Apache Derby)的一組功能。這個(gè)插件是以下幾個(gè)插件的組合。
IBM integration plug-in for Derby 將很多有用的 Derby 工具集成到了 Eclipse 環(huán)境中。下面是該工具所提供的主要功能:
DB2 plug-ins for Eclipse 和 IBM Integration plug-in for Derby 是兩個(gè)獨立的工具,但是它們之間互補性很強,前者提供了一般數據庫連接,而后者則提供了訪(fǎng)問(wèn)很多特定于 Derby 特性的訪(fǎng)問(wèn)途徑。 然而,很多任務(wù)都可以通過(guò)這些工具中的任意一個(gè)來(lái)執行,效果是一樣的。本文提到了執行一個(gè)給定任務(wù)的各種不同方法,從而使每個(gè)用戶(hù)都可以選擇他們所喜愛(ài)的工作方式。 首先要下載和安裝 DB2 plug-ins for Eclipse。該產(chǎn)品包括 DB2 插件,并且是基于 Eclipse 3.0 的,后者本身就包括了 JDT。 然后從 Apache.org 下載 Apache Derby plug-in,并在安裝了前面軟件的基礎上安裝此軟件。 最后,下載 IBM Integration plug-in for Derby 并在安裝了 eclipse 的基礎上安裝此軟件。該插件包括 JCC JDBC 驅動(dòng)程序和 Derby 集成工具。 如前所述,您將使用幾種不同的工具來(lái)開(kāi)發(fā)應用程序:DB2 plug-ins for Eclipse、IBM Integration plug-in for Derby 和 JDT。這些工具都是基于 Eclipse 的,因此它們可以很好地集成到一個(gè)單獨的開(kāi)發(fā)環(huán)境中。 在開(kāi)發(fā)應用程序時(shí),通常要建立一些到數據庫的連接:
Derby 數據庫引擎可以在多種配置下運行。最簡(jiǎn)單的一種是嵌入式配置,但在這里不適合,因為需要通過(guò)運行在不同 Java 虛擬機上的幾種工具建立連接。而且,在生產(chǎn)環(huán)境中,可能需要從多個(gè)應用程序中訪(fǎng)問(wèn)數據庫。因此,這里使用 Network Server 配置。IBM Integration plug-in for Derby 提供了一種選擇,以便可以很容易地從 Eclipse 項目目錄中啟動(dòng)本地機器上的 Derby Network Server。接著(zhù)要配置應用程序和其他工具,以連接到該網(wǎng)絡(luò )服務(wù)器。下圖展示了配置情況。 圖 1. 開(kāi)發(fā)環(huán)境配置 ![]() 設置環(huán)境的第一步是創(chuàng )建項目。選擇“File->New->Project->Java Project”并輸入 bookstore 作為項目名稱(chēng)。這樣就創(chuàng )建了一個(gè) Java 項目,然后切換到 Java perspective(透視圖)中。右擊該項目并選擇“Apache Derby->Add Apache Derby nature”。這樣使您的項目可以使用 Apache Derby 特性,然后設置該 Java 項目的構建路徑,以便應用程序可以訪(fǎng)問(wèn) Derby 數據庫和 JDBC 驅動(dòng)程序。 DB2 plug-ins for Eclipse 通??梢詮?Data perspective 訪(fǎng)問(wèn),并且無(wú)需與某個(gè)特定的項目相關(guān)聯(lián)。為了簡(jiǎn)化開(kāi)發(fā)過(guò)程,避免 Java perspective 和 Data perspective 之間的切換,需要將 DB2 plug-ins 視圖,即 Database Explorer 視圖和 DB Output 視圖,添加到 Java perspective。這可以通過(guò) 圖 2. 開(kāi)發(fā)環(huán)境布局 ![]() 在開(kāi)始編寫(xiě)實(shí)際的應用程序代碼之前,需要創(chuàng )建應用程序將要用到的數據庫,或者連接到一個(gè)已有的數據庫。 首先通過(guò)右擊項目并選擇“Apache Derby->Start Derby Network Server”來(lái)啟動(dòng) Derby Network Server。每次重新啟動(dòng) Eclipse 時(shí)都需要執行這一步。這時(shí)項目圖標上有一個(gè)綠色的箭頭,表明服務(wù)器正在運行。 創(chuàng )建一個(gè) Derby 數據庫非常類(lèi)似于連接到一個(gè)已有的數據庫:通過(guò)將
圖 3. 使用 Connection Wizard 創(chuàng )建數據庫 ![]() 完成該向導后,便創(chuàng )建了一個(gè)數據庫,并且向 Database Explorer View 中添加了一個(gè)連接。通過(guò)展開(kāi)連接的節點(diǎn),就可以瀏覽這個(gè)數據庫,但是顯然這個(gè)時(shí)候它是空的。 數據庫被創(chuàng )建在 Derby 網(wǎng)絡(luò )服務(wù)器的當前目錄中,也就是之前創(chuàng )建 Eclipse 項目時(shí)所在的目錄??梢酝ㄟ^(guò)右擊項目名并選擇 Refresh 來(lái)刷新該項目,這樣將顯示一個(gè)新的 接下來(lái)的步驟是創(chuàng )建應用程序將要用到的數據庫對象。在這里,只需使用 SQL Scrapbook 創(chuàng )建一個(gè)表即可。SQL Scrapbook 可以通過(guò)右擊連接名并選擇“Open SQL Scrapbook”來(lái)調用。這時(shí)將打開(kāi)一個(gè)新的編輯器,在這個(gè)編輯器中可以輸入要發(fā)出的 SQL 語(yǔ)句: 清單 1. CREATE TABLE 語(yǔ)句
請注意,SQL Scrapbook 只能用于執行單條的 SQL 語(yǔ)句。而且,不要以分號來(lái)結束 SQL 語(yǔ)句。然后,可以按下主 Eclipse 按鈕欄中的“Execute SQL statement”按鈕。DB Output 視圖應該顯示結果是成功的。還可以刷新連接,以及驗證數據庫現在是否包含新創(chuàng )建的表。 圖 4. 使用 SQL Scrapbook 創(chuàng )建表 ![]() 現在通過(guò)執行 INSERT 語(yǔ)句向 books 表填充一些測試數據。這也可以通過(guò) SQL Scrapbook 來(lái)實(shí)現,但這里我們使用了 IBM Integration plug-in for Derby 的“Run SQL script using ij”功能。這項功能允許使用 Derby 命令行實(shí)用程序執行 SQL 腳本,并在 Eclipse 輸出視圖中查看結果。這種方法的一大優(yōu)點(diǎn)是:它允許一次執行多條語(yǔ)句。而且,這種方法要求在腳本的開(kāi)始處包含一條連接語(yǔ)句,因此您可以對連接 URL 有更多的控制。 表 2. SQL Scrapbook 和 IJ 腳本 之間的不同之處
構建 URL 的一種簡(jiǎn)便方法是復制 Connection Wizard 所使用的 URL:在數據庫瀏覽器中右擊連接,然后選擇“Edit Connection”并訪(fǎng)問(wèn)“Connection URL”字段。這里需要添加用戶(hù)名和密碼作為 URL 屬性。 使用 Eclipse 在項目中創(chuàng )建一個(gè)名為 清單 2. INSERT INTO 語(yǔ)句
然后就可以在 Project Explorer 中右擊該文件并選擇“Apache Derby->Run SQL script using ij”。Eclipse 的控制臺輸出視圖將顯示執行的結果,這個(gè)結果應該是成功的。然后可以在 Database Explorer 中選擇 books 表,并選擇“Sample Content”,以確信數據真正被插入到這個(gè)表中。 圖 5. 執行 SQL 腳本以插入數據 ![]() 編寫(xiě) Derby Client JDBC 應用程序 通過(guò)使用 Eclipse JDT 和 Derby JDBC 驅動(dòng)程序,可以很容易地編寫(xiě) JDBC 應用程序。首先使用 JDT Class 向導在 在連接到一個(gè) Derby 數據庫之前,需要使用 可以使用兩種不同的 JDBC 驅動(dòng)程序,這取決于 Derby 配置:
由于這個(gè)例子是基于一個(gè)網(wǎng)絡(luò )服務(wù)器配置,因此這里使用 jcc JDBC 驅動(dòng)程序。如果不確定的話(huà),那么正確的類(lèi)名可以通過(guò)從 Connection 向導復制獲得: 清單 3. 裝載 jcc JDBC 驅動(dòng)程序
獲得連接 URL 的一種好方法是在 Database Explorer 視圖中編輯 Derby 連接,并復制從各個(gè)連接屬性自動(dòng)構造而成的連接 URL。出于安全的原因,這里沒(méi)有顯示用戶(hù)名和密碼,因此在應用程序代碼中需要手動(dòng)地將它們添加到 URL 的后面。 圖 6. 使用連接向導構建連接 URL ![]() 其他選項也可以添加到 URL 的后面。例如, 在本文的例子中,使用下列代碼連接到 Derby 數據庫: 清單 4. 連接到數據庫
一旦建立了連接,便可以通過(guò)使用 JDBC API 查詢(xún)數據庫。例如,您可以創(chuàng )建一個(gè) Statement 對象,然后使用這個(gè)對象來(lái)執行對數據庫的 SQL 查詢(xún)。查詢(xún)返回一個(gè)用于迭代查詢(xún)結果集的 清單 5. 執行查詢(xún)并迭代結果集
圖 7. 運行 JDBC 應用程序 ![]() 要了解關(guān)于使用 JDBC 的更多信息,請參閱本文 參考資料 一節中列出的 JDBC 教程。 您可以下載 下面是應用程序輸出的一個(gè)例子: 圖 8. Inventory 應用程序的示例輸出 ![]() 前一節中討論的 JDBC 應用程序對于開(kāi)發(fā)用于用戶(hù)的前端應用程序非常有用。然而,在這一層中實(shí)現重要的應用程序邏輯不是很妥當,因為應用程序邏輯放置在數據庫之外,這使得數據庫更容易受到損壞。例如,如果另一個(gè) JDBC 應用程序連接到同一個(gè)數據庫,那么就需要確保它實(shí)現相同的邏輯。對于這個(gè)問(wèn)題,一種解決辦法是通過(guò)使用觸發(fā)器、存儲過(guò)程和函數,在數據庫中實(shí)現數據庫規則。 由于 Derby 是一種 Java 數據庫,因此它沒(méi)有自己的存儲過(guò)程/函數語(yǔ)言,而是使用 Java 語(yǔ)言??梢酝ㄟ^(guò)創(chuàng )建一個(gè) Java 方法,然后基于這個(gè) Java 方法聲明一個(gè) Derby 過(guò)程或函數,從而創(chuàng )建 Derby 存儲過(guò)程或函數(通常稱(chēng)為例程)。對 Derby 例程的調用將導致這個(gè) Java 方法被調用。 為了讓這種調用獲得成功,重要的是讓 Derby 和 Java 例程的聲明相匹配。下面的表展示了應該使用的 Derby 和 Java 特性的映射。 表 4. 用于編寫(xiě) Java 函數和過(guò)程的特性映射
表 5. 用于編寫(xiě) Java 函數和過(guò)程的類(lèi)型映射
對于 Java 方法本身的內容沒(méi)有約束,因此任何合法的 Java 代碼都可以作為 Derby 過(guò)程或函數來(lái)調用。一種有趣的應用是使用標準 對于本文的應用程序,需要在 因此,這個(gè) Java 方法的聲明如下: 清單 6. Java 方法的聲明
這個(gè)函數的作用是:當書(shū)的數量達到一個(gè)下界或上界時(shí),就發(fā)送一封電子郵件。因此,可以聲明 下面是完整的代碼: 清單 7. DerbyFunctions 類(lèi)
從 main 方法中調用這個(gè) Java 方法,以便對其進(jìn)行測試,這通常是一種很好的做法。 創(chuàng )建 Derby 存儲過(guò)程或函數比較容易,只需指定名稱(chēng)、參數、返回值和相應 Java 方法的全限定名稱(chēng)即可。Derby 例程的標簽必須與 Java 方法的標簽相匹配,以便數據庫可以成功地調用 Java 代碼。 可以很容易地從 SQL Scrapbook 發(fā)出 CREATE 語(yǔ)句,但是在這個(gè)例子中,最好使用 ij 實(shí)用程序。如果使用 ij 實(shí)用程序,便可以顯式地指定連接 URL,從而允許我們包括 下面是在 ij 中發(fā)出的命令: 清單 8. 在 Derby 中創(chuàng )建 Java 函數
Derby 函數的創(chuàng )建應該可以成功,但有時(shí)候我們很難一開(kāi)始就能保證語(yǔ)句完全正確。下面是可能發(fā)生的一些常見(jiàn)錯誤:
請注意,如果更改了方法的 Java 代碼,那么就需要停止并重新啟動(dòng) Derby 網(wǎng)絡(luò )服務(wù)器,以便數據庫引擎的類(lèi)裝載器裝載新的代碼。 成功地創(chuàng )建了 Derby 例程之后,就可以通過(guò) ij 命令行調用這個(gè)例程,以便對其進(jìn)行測試??梢酝ㄟ^(guò)使用 CALL 語(yǔ)句來(lái)調用 derby 過(guò)程,但在這里因為需要測試一個(gè)函數,因此發(fā)出以下命令: 清單 9. 調用 Derby 中的 Java 方法
IJ 顯示返回值,在這里,這個(gè)返回值為 1,因為數量到達了上界。由于這個(gè) Java 方法是在 Derby 服務(wù)器 JVM 中運行的,因此調試消息將被輸出到服務(wù)器的標準輸出中。使用 eclipse 控制臺視圖切換到 Derby 網(wǎng)絡(luò )服務(wù)器控制臺,您應該可以看到一條 還可以嘗試使用以下代碼從 JDBC 應用程序中調用 Derby 函數: 清單 10. 從客戶(hù)機應用程序中調用 Java 方法
結果應該與前面測試中的結果一致。 本節最后一步是配置 Derby,以便每次更新某種書(shū)籍的數量時(shí),調用之前定義的函數。這可以用一個(gè)觸發(fā)器來(lái)實(shí)現。 derby 觸發(fā)器包含關(guān)于要執行的動(dòng)作以及何時(shí)執行動(dòng)作的信息。
下面是在 ij 中發(fā)出的用于創(chuàng )建觸發(fā)器的語(yǔ)句: 清單 11. CREATE TRIGGER 語(yǔ)句
檢查觸發(fā)器是否有效的一種簡(jiǎn)便方法是使用以下命令從 ij 工具中更新 book 表: 由于觸發(fā)器直接存儲在數據庫中,因此無(wú)論如何更新數據,對觸發(fā)器的調用都將是一致性的。由于這個(gè)原因,如果您試圖使用客戶(hù)機應用程序更新數量,那么您將看到,適當的時(shí)候就會(huì )生成電子郵件消息,不需要對應用程序作任何更改。 下圖展示了客戶(hù)機應用程序的輸出,用的是原始數據。注意,這一次書(shū)的狀態(tài)會(huì )獲得更新,并生成了一條消息: 圖 9. Inventory 應用程序的示例輸出 ![]() 圖 10. Network Server 的示例輸出 ![]() 至此,您已經(jīng)有了一個(gè)功能完備的數據庫和客戶(hù)機應用程序,但它們仍然只能在 Eclipse 環(huán)境中運行,在生產(chǎn)環(huán)境中不被接受。因此,還需要執行應用程序的部署。 如前所述,Derby Java 函數或過(guò)程是由數據庫引擎自身來(lái)執行的。因此,數據庫引擎必須能夠訪(fǎng)問(wèn) Java 類(lèi)。在這個(gè)例子中,這一點(diǎn)是沒(méi)有問(wèn)題的,因為 Derby 網(wǎng)絡(luò )服務(wù)器運行在 Eclipse 項目中,并且使用項目的類(lèi)路徑,該類(lèi)路徑包含了已創(chuàng )建的所有 Java 類(lèi)。 在一個(gè)典型的生產(chǎn)環(huán)境中,您不需要更改用于 Derby 網(wǎng)絡(luò )服務(wù)器的類(lèi)路徑。Derby 提供了一些可以解決這個(gè)問(wèn)題的過(guò)程:
對于本文中的例子,首先要創(chuàng )建一個(gè) JAR 文件,這個(gè) JAR 文件包含 然后可以使用下列命令(在 ij 中)將 JAR 文件安裝到數據庫中,并將其添加到類(lèi)路徑中: 清單 12. 將 JAR 文件存儲在 Derby 數據庫中
做完這些后,Java 代碼便屬于數據庫,這使得數據庫的轉移和啟動(dòng)變得很容易。整個(gè)數據庫目錄可以直接轉移到一個(gè)完全不同的環(huán)境中,并且可以正常運行。 在開(kāi)發(fā)應用程序時(shí),我們使用了網(wǎng)絡(luò )服務(wù)器配置,這樣一來(lái),應用程序的部署就會(huì )按正確的方式打包各個(gè)組件。 在服務(wù)器端,需要安裝:
這些組件可以復制到任何裝有 JVM 的機器上,網(wǎng)絡(luò )服務(wù)器可以使用下列命令來(lái)啟動(dòng): 清單 13. 啟動(dòng) Derby 網(wǎng)絡(luò )服務(wù)器
可以使用下列命令可以停止網(wǎng)絡(luò )服務(wù)器: 清單 14. 停止 Derby 網(wǎng)絡(luò )服務(wù)器
在客戶(hù)端,需要安裝:
這些組件可以復制到任何裝有 JVM 的機器上。當網(wǎng)絡(luò )服務(wù)器正在運行時(shí),可以使用以下命令啟動(dòng)應用程序: 清單 15. 啟動(dòng)客戶(hù)機應用程序
下圖闡明了網(wǎng)絡(luò )服務(wù)器配置中應用程序的部署: 圖 11. 網(wǎng)絡(luò )服務(wù)器部署配置 ![]() 下圖展示了應用程序在生產(chǎn)環(huán)境中的執行: 圖 12. 已部署的網(wǎng)絡(luò )服務(wù)器的執行 ![]() 圖 13. 已部署的客戶(hù)機應用程序的執行 ![]() 網(wǎng)絡(luò )服務(wù)器配置也許最適合這種類(lèi)型的應用程序,但是也可以使用嵌入式服務(wù)器配置,比如出于性能方面的原因。 在部署應用程序之前,需要在代碼中作一下修改,使連接指向嵌入式服務(wù)器,而不是遠程服務(wù)器。這可以通過(guò)修改 JDBC 驅動(dòng)程序類(lèi)名和連接 URL 來(lái)實(shí)現這一點(diǎn): 清單 16. 新的連接代碼
完成這些修改之后,便可以使用 Eclipse 導出功能將應用程序的類(lèi)打包到 JAR 文件中,并將下列文件部署到生產(chǎn)機器上:
可以使用下列命令啟動(dòng)應用程序: 清單 17. 啟動(dòng)應用程序
下圖闡明了應用程序在嵌入式服務(wù)器配置中的部署: 圖 14. 嵌入式服務(wù)器部署配置 ![]() 雖然 Apache Derby 是一種非常健壯的、可伸縮的數據庫,但是由于以下原因,您有理由轉而使用企業(yè)數據庫,例如 DB2 UDB:
由于有了 DB2 plug-ins for Eclipse,并且客戶(hù)機應用程序是基于標準 JDBC 接口的,所以從 Derby 到 DB2 的遷移很容易完成。 第一步是遷移數據庫本身。DB2 plug-ins for Eclipse 提供了一個(gè)工具來(lái)自動(dòng)地將 Apache Derby 數據庫遷移到 DB2 for Linux、Unix 和 Windows。 首先通過(guò)在 DB2 CLP 中發(fā)出 然后可以通過(guò)在 Database Explorer 視圖中右擊之前創(chuàng )建的 derby 數據庫條目并選擇 ‘Migrate to DB2 UDB…’ 動(dòng)作來(lái)調用遷移工具。確保 DB2 服務(wù)器已經(jīng)啟動(dòng),并遵循使用說(shuō)明來(lái)創(chuàng )建 DB2 數據庫、遷移數據庫對象和遷移實(shí)際數據。 圖 15. 使用 DB2 plug-ins for Eclipse 遷移 Derby 數據庫 ![]() 完成了數據庫的遷移之后,遷移工具會(huì )給出一個(gè)報告,指出遷移獲得成功,但是有些對象不能遷移。當前版本的遷移工具不支持觸發(fā)器和函數,因此需要手動(dòng)遷移這些對象。 Apache Derby SQL 語(yǔ)言是與 DB2 兼容的語(yǔ)言,因此可以重復使用以前的 SQL 語(yǔ)句來(lái)創(chuàng )建丟失的對象。在 Database Explorer 中右擊 DB2 連接,并打開(kāi)一個(gè)新的 SQL Scrapbook。 包含 Java 函數的 JAR 文件的安裝與 Derby 的安裝類(lèi)似,惟一的區別是無(wú)需將 JAR 文件添加到類(lèi)路徑。從 DB2 連接打開(kāi)一個(gè) SQL scrapbook,并輸入以下命令: 清單 18. 在 DB2 中安裝 JAR 文件
為了創(chuàng )建函數和觸發(fā)器,只需將之前使用的 SQL 語(yǔ)句復制和粘貼到 SQL scrapbook 中。記住,一次只能執行一條語(yǔ)句,因而不能使用冒號作為結束符。 清單 19. 在 DB2 中創(chuàng )建函數和觸發(fā)器
遷移客戶(hù)機應用程序的主要工作是修改建立數據庫連接的那部分代碼:
雖然 JDBC API 允許以相同的方式連接到任何數據庫,但發(fā)送到數據庫的實(shí)際的 SQL 查詢(xún)必須遵從數據庫 SQL 語(yǔ)言。因此,遷移 JDBC 應用程序時(shí)需要重新編寫(xiě)某些 SQL 查詢(xún)。在這個(gè)例子中,Derby 語(yǔ)言是 DB2 語(yǔ)言的一個(gè)子集,因此不存在這方面的問(wèn)題,您無(wú)需對 SQL 查詢(xún)作任何修改。 現在應用程序應該可以進(jìn)行編譯,并且可以成功地在 DB2 數據庫上運行。還可以像在 Derby 網(wǎng)絡(luò )服務(wù)器配置中那樣部署應用程序。 在閱讀本文之后,您應該能夠有效地使用為 Derby 提供的基于 Eclipse 的不同工具開(kāi)發(fā) Apache Derby 應用程序。您還應該可以執行一些相關(guān)的任務(wù),例如在各種可能的配置中部署這種應用程序,或者將數據庫和應用程序遷移到 DB2 UDB。
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
聯(lián)系客服