摘自: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 |
| 关于下载方法的信息 | ||||
本文介绍如何在Eclipse插件中集成Apache Derby数据库,实现客户端SQL数据库的创建及数据处理,通过示例演示了如何使用Derby进行数据存储与检索。
462

被折叠的 条评论
为什么被折叠?



