使用 Apache Derby 开发 Eclipse 插件

本文介绍如何在Eclipse插件中集成Apache Derby数据库,实现客户端SQL数据库的创建及数据处理,通过示例演示了如何使用Derby进行数据存储与检索。

摘自: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.zip173KBHTTP
关于下载方法的信息

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值