摘自:http://www.ibm.com/developerworks/cn/opensource/os-ad-eclipse/index.html#section2
本文演示瞭如何將資源索引與 Apache Derby 數據庫結合使用來開發 Eclipse 插件。嵌入到 Eclipse 的 Derby 數據庫使您可以在客戶端創建 SQL 數據庫而不會有安全問題或網絡問題,例如連接不穩定或反應時間長。SQL 數據庫和 JDBC API 提供了一種輕鬆的方法用於存儲信息和快速搜索先前存儲的數據。
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 查詢(有關詳細信息的鏈接,請參閱 參考資料 部分)。
要安裝這些插件,請執行以下步驟:
- 將文件從下載的軟件包中解壓縮到 Eclipse 插件目錄中(例如,/eclipse/plugins)。
- 啓動(或重新啓動)Eclipse,並通過單擊 Help > About Eclipse SDK > Plug-in details 檢驗插件是否已經成功安裝。您應當會在列表中看到 Derby 插件,如圖 1 所示。
注:如果需要測試本文附帶的示例應用程序,那麼至少需要使用 Derby 內核插件。
現在可以創建一個簡單的插件來演示 Derby 內核插件的功能。爲此,請使用 Eclipse Plug-In Project 嚮導創建一個名爲 sample_derby 的新項目,該項目將基於 Hello World 模板(參見圖 2)。
圖 2. 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 類。
現在您可以瞭解如何通過擴展插件爲本地數據庫的 Records 表提供簡單的記錄計數器來操作簡單的 Derby 數據庫。此表包含關於數據庫中保存的記錄數目的信息。單擊按鈕後,記錄數加一,並且顯示具有當前記錄數的對話框。首先,打開定義負責 Sample Action 的類的 SampleAction.java 文件,然後創建一個名爲 queryRecords
的新方法。此時,您還只能連接至現有數據庫。或者,如果相應的數據庫不存在,系統將創建一個新數據庫並始終返回 0(參見清單 1)。
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)。
MessageDialog.openInformation( window.getShell(), "Sample_derby Plug-in", "We have " + queryRecords() + " Records in the database"); |
注意 queryRecords
方法拋出異常,您只能通過使用 try-catch 結構並顯示錯誤消息對話框來處理。
調用 Sample Action 程序後,您將看到系統顯示以下對話框(參見圖 4):
接下來,需要將 INSERT/SELECT
查詢添加到應用程序中。清單 3 中顯示的代碼只將新條目添加到 Records 表中,計算並返回記錄數目。將下面幾行添加到 Java 文件的開頭。
/** 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
方法的末尾。
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 所示的對話框:
現在,您看到了如何在 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 |
關於下載方法的信息 |