使用 Apache Derby 開發 Eclipse 插件

摘自:http://www.ibm.com/developerworks/cn/opensource/os-ad-eclipse/index.html#section2

 

本文演示瞭如何將資源索引與 Apache Derby 數據庫結合使用來開發 Eclipse 插件。嵌入到 Eclipse 的 Derby 數據庫使您可以在客戶端創建 SQL 數據庫而不會有安全問題或網絡問題,例如連接不穩定或反應時間長。SQL 數據庫和 JDBC API 提供了一種輕鬆的方法用於存儲信息和快速搜索先前存儲的數據。

 

 

Apache Derby 和 Eclipse 插件

Eclipse 是一個功能強大的 IDE 平臺,支持用於創建 GUI 組件(例如 SWT 或 JFaces)或用於處理數據(例如 Eclipse Modeling Framework)的許多框架。Eclipse 最令人興奮的一個功能是能夠通過創建新插件擴展 IDE 平臺的功能。Eclipse 既支持以上提及的框架來進行插件開發,又支持許多其他常用框架(包括 Apache Derby 數據庫)。

本文向您展示瞭如何在使用資源索引的情況下使用 Derby 數據庫進行 Eclipse 插件開發。嵌入到 Eclipse 中的 Derby 數據庫使您可以在客戶端創建 SQL 數據庫而不會有任何安全問題或網絡問題,例如連接不穩定或反應時間長。SQL 數據庫和 JDBC API 提供了一種輕鬆的方法用於存儲信息和快速搜索先前存儲的數據。

您將瞭解到關於下列主題的內容:

  • 將 Derby 數據庫集成到 Eclipse 平臺上
  • 使用 Derby 數據庫處理 Eclipse 中的數據
  • 使用 Eclipse Builder 框架進行資源索引

入門

要開始在 Eclipse 中使用 Derby 數據庫,第一步是 下載 Derby Eclipse 插件。選擇 Latest Official Release 部分下的鏈接。您將在軟件包中找到以下三個插件:

  • Derby 內核插件,它爲 Eclipse 平臺提供 Derby 支持
  • Derby 用戶界面 (UI) 插件,它爲在 Eclipse 平臺中使用 Derby 數據庫提供 UI 組件
  • Derby UI 文檔插件,它爲 UI 插件提供文檔

Derby 內核插件允許使用 Derby 服務器和客戶機庫。因此,您既可以在 Eclipse 中創建 Derby 數據庫,又可以連接至現有數據庫。Derby UI 插件將提供在開發使用 Derby 數據庫的應用程序時有用的組件和工具。例如,此插件允許您連接至現有數據庫以及向數據庫發送 SQL 查詢(有關詳細信息的鏈接,請參閱 參考資料 部分)。

要安裝這些插件,請執行以下步驟:

  1. 將文件從下載的軟件包中解壓縮到 Eclipse 插件目錄中(例如,/eclipse/plugins)。
  2. 啓動(或重新啓動)Eclipse,並通過單擊 Help > About Eclipse SDK > Plug-in details 檢驗插件是否已經成功安裝。您應當會在列表中看到 Derby 插件,如圖 1 所示。


圖 1. Eclipse 插件清單中的 Derby 插件
Eclipse 插件清單中的 Derby 插件

:如果需要測試本文附帶的示例應用程序,那麼至少需要使用 Derby 內核插件。

測試 Derby 數據庫插件功能的簡單代碼

現在可以創建一個簡單的插件來演示 Derby 內核插件的功能。爲此,請使用 Eclipse Plug-In Project 嚮導創建一個名爲 sample_derby 的新項目,該項目將基於 Hello World 模板(參見圖 2)。


圖 2. Eclipse Hello World 插件創建嚮導
Eclipse Hello World 插件創建嚮導

最初的 Hello World 插件只創建一個名爲 Sample Menu 的 Eclipse 菜單元素和一個 Sample Action 菜單項。當用戶單擊此菜單項時,Hello World! 對話框將彈出。該插件還允許從 Eclipse 工具欄調用對話框。要查看其運行方法,請在 plugin.xml 文件編輯器的窗口中單擊 Run an Eclipse application 鏈接,或者單擊 Eclipse 工具欄中的 Run 按鈕並使用 Eclipse application 配置調用它。

向新創建的插件中添加 Derby 支持即是指定 Derby 內核插件上的依賴性。您可以通過在打開 sample_derby 項目中打開 plugin.xml 文件,然後在 Dependencies 選項卡的 Required Plug-ins 部分種選擇與 org.apache.derby.core 的依賴性來完成指定操作(參見圖 3)。完成後,插件就可以使用 Derby 類。


圖 3. 插件依賴性編輯器
插件依賴性編輯器

現在您可以瞭解如何通過擴展插件爲本地數據庫的 Records 表提供簡單的記錄計數器來操作簡單的 Derby 數據庫。此表包含關於數據庫中保存的記錄數目的信息。單擊按鈕後,記錄數加一,並且顯示具有當前記錄數的對話框。首先,打開定義負責 Sample Action 的類的 SampleAction.java 文件,然後創建一個名爲 queryRecords 的新方法。此時,您還只能連接至現有數據庫。或者,如果相應的數據庫不存在,系統將創建一個新數據庫並始終返回 0(參見清單 1)。


清單 1. Derby 初始化代碼

				
public class SampleAction implements IWorkbenchWindowActionDelegate {
/* ...code skipped here... */

/** driver string. */
private static final String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
/** protocol string. */
private static final String PROTOCOL = "jdbc:derby:";
/** database name string. */
private static final String DATABASE = "sampleDB";

/** SQL script for creating Categories table. */
private static final String CREATE_TABLE = "CREATE TABLE Records" 
     + "("
     + "quantity int"
     + ")";

/* ...code skipped here... */

/**
* Connects to database, inserts one record into Records table 
* and then counts total records quantity in database.
* If database does not exist, then new database is created.  
*/
private int queryRecords()
        throws SQLException, IllegalAccessException, ClassNotFoundException,
        InstantiationException {

    Connection currentConnection = null;
    System.setProperty("derby.system.home",
        Sample_derbyPlugin.getDefault().getStateLocation().toFile().getAbsolutePath());
    Properties props = new Properties();

    try {
        Class.forName(DRIVER).newInstance();
        currentConnection = DriverManager.getConnection(PROTOCOL 
            + DATABASE, props);

    } catch (SQLException sqlException) {
        //trying to create database
        currentConnection = DriverManager.getConnection(PROTOCOL 
            + DATABASE + ";create=true", props);
        try {
            Statement s = currentConnection.createStatement();
            try {
                s.execute(CREATE_TABLE);
            } finally {
                s.close();
            }
            currentConnection.commit();
        } catch (SQLException ex) {
            currentConnection.close();
            throw ex;
        }
    }
    return 0;
}
    

在這裏,系統屬性 derby.system.home 對應的是 Derby 系統文件的位置。在 清單 1 中,系統屬性被設爲工作區目錄內的插件數據文件夾 .metadata/.plugins/sample_derby。

要檢驗查詢函數是否成功地建立了連接,必須通過添加以下代碼來更改同一個 Java 源文件中的運行方法(參見清單 2)。


清單 2. 顯示信息對話框

				
MessageDialog.openInformation(
window.getShell(),
"Sample_derby Plug-in",
"We have " + queryRecords() + " Records in the database");
    

注意 queryRecords 方法拋出異常,您只能通過使用 try-catch 結構並顯示錯誤消息對話框來處理。

調用 Sample Action 程序後,您將看到系統顯示以下對話框(參見圖 4):


圖 4. 運行的樣例應用程序
運行的樣例應用程序

接下來,需要將 INSERT/SELECT 查詢添加到應用程序中。清單 3 中顯示的代碼只將新條目添加到 Records 表中,計算並返回記錄數目。將下面幾行添加到 Java 文件的開頭。


清單 3. Derby 查詢聲明

				
/** SQL query that counts number of records in database    */
private static final String SELECT_RECORDS_QUERY = 
        "SELECT SUM(quantity) FROM Records";
    
/** SQL script that adds new record into database    */
private static final String INSERT_RECORDS_QUERY = 
        "INSERT INTO Records (quantity) VALUES(1)";
    

接下來,將下列代碼添加到 queryRecords 方法的末尾。


清單 4. Derby 查詢用法示例

				int result = 0;
try {
    Statement s = currentConnection.createStatement();
    try {
        s.execute(INSERT_RECORDS_QUERY);
        ResultSet rs = s.executeQuery(SELECT_RECORDS_QUERY);
        if (rs.next()) {
            result = rs.getInt(1);
        }
    } finally {
        s.close();
    }
    currentConnection.commit();
} finally {
    currentConnection.close();
}
return result;
    

當 Eclipse 建立了與數據庫的連接後,它將在 Records 表中插入一個新行,計算表中的記錄數目,並返回此數目。因而,記錄數目將隨每次觸發 Sample Action 而增長。多次調用應用程序後,應當會看到類似圖 5 所示的對話框:


圖 5. 運行的樣例應用程序
運行的樣例應用程序

現在,您看到了如何在 Eclipse 插件內使用內部 Derby 數據庫的快速演示。接下來讓我們去了解如何將插件用於更復雜的應用程序。

 

 

補充:運行方法:run --> as -->eclispe application

 

彈出一個新的eclipse界面之後點擊上方的那個eclipse圖標即可運行。

 

結束語

Eclipse 和 Apache Derby 目前是業內兩個著名的開放源碼項目。Eclipse 框架允許創建各種 GUI 應用程序,特別是 IDE 應用程序。Apache Derby 允許您爲任何 Java 應用程序創建本地 SQL 數據庫。並且正如本文所演示的,可以輕鬆地將 Eclipse 與 Derby 結合使用。

使用 Derby 數據庫開發 Eclipse 插件的一個主要應用是資源索引。連同 Eclipse Builder 框架一起使用,您可以將資源信息存儲到 SQL 數據庫中,然後通過查詢使用這些信息。由於 Derby 數據庫針對 SQL 查詢做了優化,因此訪問資源索引時可獲得最佳性能。






回頁首


下載

描述 名字 大小 下載方法
本文的樣例項目 samples.zip 173KB HTTP
關於下載方法的信息
發佈了36 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章