练习 4:创建 EGL 数据部件
既然您已创建并配置了 EGL 项目,就可以准备创建 EGL 应用程序了。创建 EGL Web 应用程序通常包括下列步骤:
- 创建包。
这些包类似于文件夹;它们组织和管理应用程序中的源文件。包是一个代码单元,包外面的 EGL 函数能够导入和使用它。
- 创建库。
库包含在一个或多个项目中共享的函数。库用来组织代码并提高在某些目标环境中的运行时性能。
- 创建数据部件。
数据部件在 EGL 源文件中定义,基于这些数据部件的变量在 EGL 函数中声明和使用。
- 创建函数。
函数是数据访问和业务逻辑的指令。共享函数放在 EGL 库中。
- 创建 Web 页面和相关的 PageHandler。
一旦创建了前面的步骤中列示的文件和函数,就可以开始创建提供用户界面的 Web 页面和 PageHandler 了。
- 测试应用程序。
开发 Web 应用程序的最后一步是在服务器上测试它。
在此练习中,使用“数据部件”向导以创建包、库和数据部件。“数据部件”向导帮助您创建访问数据库所需的数据部件。
启动 EGL 数据部件向导
- 在“项目资源管理器”视图中,单击 EGLWeb 项目以选择它。
如果在创建数据部件或文件之前没有选择项目,则这些数据部件或文件就不会出现在您想要放置的位置。
- 从菜单栏中,单击文件 > 新建 > 其它。将打开“新建”菜单。
- 展开 EGL,而不是 EGL 项目。
- 单击 EGL 数据部件。
- 单击下一步。将出现“新建 EGL 数据部件”窗口。
- 在 EGL 项目名称列表中,选择 EGLWeb。
- 单击添加。将出现“新建数据库连接”窗口。
创建数据库连接
数据库连接提供从新的数据部件指向样本数据库的链接。
- 单击选择数据库管理器和 JDBC 驱动程序。
- 单击下一步。
- 在选择数据库管理器下面,展开 Cloudscape。
- 在 Cloudscape 下面,单击 V5.1。
- 单击数据库位置旁,页面顶部的浏览按钮。
注意,在此页面上有两个浏览按钮。单击此页面上较高的那个按钮(数据库位置旁)。
- 浏览至 EGLWeb 项目中包括的 EGLSAMPC 数据库的位置。它现在位于 workspace-location/EGLWeb/WebContent/EGLSAMPC(其中
workspace-location 是工作空间的位置)中。
- 在选择数据库目录下面,单击 EGLSAMPC 文件夹。文件夹字段显示 EGLSAMPC。
- 单击确定。
不需要输入用户标识或密码。
“新建数据库连接”屏幕看起来应如下所示:

- 单击完成。“数据库连接”向导将连接至数据库并返回到“新建 EGL 数据部件”窗口。
从数据库检索 CUSTOMER 表
现在,“新建 EGL 数据部件”向导的选择数据框中,显示了数据库中提供的表。
- 在选择数据下面,单击 CUSTOMER。
- 单击
向右箭头按钮。将 CUSTOMER 表添加至表名下的数据部件。
“新建 EGL 数据部件”窗口看起来应如下所示:

- 单击完成。将打开“生成信息”窗口。
- 在“生成信息”窗口中,单击确定。
许多新文件就位于 EGLWeb 项目的 EGLSource 文件夹中:
- 名为 data 和 libraries 的包,它们用类似于文件夹存放文件的方式存放其它文件。
- 称为 DataItems.egl 的 EGL 源文件,它定义项目的 dataItem 部件。在此示例中,dataItem 表示数据库字段。在 DataItems.egl 中,在数据库的 CUSTOMERS 表中的每个字段都有相对应的 dataItem,如 CUSTOMER_ID 和 LAST_NAME。
- 称为 CustomerRecord.egl 的 EGL 源文件,它包含 EGL 记录部件。此记录部件包括从数据库中检索到的信息,并且它引用 dataItem 部件。
- 名为 CustomerLibrary.egl 的文件,它包含对数据执行操作(如读取记录和更新记录)所需的函数。
编辑库
称为 CustomerLibrary.egl 的库包含访问记录部件中的数据的函数。必须确保正确创建了这些函数并对它们进行了正确的配置以访问数据库中的数据。这些步骤将更正在 CustomerLibrary.egl 文件中您可能会看到的任何错误。
- 在 EGLSource 文件夹中打开 Libraries 包。
- 双击 CustomerLibrary.egl 文件。
- 查找名为 deleteCustomer 的函数。它以函数声明 Function deleteCustomer 开头。
- 以 DELETE FROM 开头的这一行函数是从数据库中删除行的 SQL 调用。必须正确编写它以正确访问数据库。
- 将 DELETE FROM 行替换为此行代码:
DELETE FROM EGL.CUSTOMER WHERE CUSTOMER.CUSTOMER_ID = :customer.CUSTOMER_ID
deleteCustomer 函数看起来应如下所示:

- 查找 updateCustomer 函数。它以函数声明 Function updateCustomer 开头。
此函数具有更长的 SQL 调用,因为它使用表中的每个字段。
- 将从 execute sql#{ 行到 sqlStatusData.sqlStatus = 0; 行的所有代码替换为下列代码:
execute #sql{
UPDATE EGL.CUSTOMER SET FIRST_NAME = :customer.FIRST_NAME,
LAST_NAME = :customer.LAST_NAME, PASSWORD = :customer.PASSWORD,
PHONE = :customer.PHONE, EMAIL_ADDRESS = :customer.EMAIL_ADDRESS,
STREET = :customer.STREET, APARTMENT = :customer.APARTMENT,
CITY = :customer.CITY, STATE = :customer.STATE,
POSTALCODE = :customer.POSTALCODE, DIRECTIONS = :customer.DIRECTIONS
WHERE CUSTOMER.CUSTOMER_ID = :customer.CUSTOMER_ID
};
sqlStatusData.sqlStatus = 0;
updateCustomer 函数看起来应如下所示:

- 保存该文件。
- 右键单击 CustomerLibrary.egl 库中的任何地方并从弹出菜单中单击生成。或者可以按 Ctrl+G。
编辑记录定义
EGL 记录部件定义位于文件 CustomerRecord.egl 中。将在稍后的 EGL 教程中学习到有关记录部件的更多信息,但现在必须确保正确定义了记录。
- 在 EGLSource 文件夹中打开 data 包。
- 双击文件 CustomerRecord.egl。
以 Record Customer type sqlRecord 开头的代码定义了一个 EGL 数据部件,用于存放样本数据库中的记录。
- 在 CustomerRecord.egl 文件中,删除内容为 indexInArray int {persistent = no}; 的代码行。
- 保存并关闭该文件。
现在,您可以开始进行练习 5:创建 EGL 库了。