本节介绍了有关使用 Application Server 9 捆绑的 Java DB 数据库实现的说明。Java DB 基于 Apache Derby 数据库。
Sun Java System Application Server 9 引入了两个新的 asadmin 命令,用于启动和停止 Java DB 网络服务器。
asadmin start-database 命令用于启动 Java DB 网络服务器实例:
start-database [--dbhost 0.0.0.0] [--dbport 1527] [--dbhome path] |
主机的默认值为 0.0.0.0,这将允许 Java DB 在 localhost 以及 IP/主机名接口上侦听。dbhome 属性值为 Java DB 数据库的驻留位置。默认 path 为 appserver_install_dir/javadb。
asadmin stop-database 命令用于关闭正在运行的 Java DB 网络服务器实例:
stop-database [--dbhost 0.0.0.0] [--dbport 1527] |
Application Server 9 附带的 Java DB 配置还包括几个有用的脚本,可帮助您使用 Java DB。以下脚本可用于 <appserver_install_dir>/javadb/frameworks/NetworkServer/bin 目录中:
startNetworkServer.ksh/bat—用于启动网络服务器的脚本
stopNetworkServer.ksh/bat—用于停止网络服务器的脚本
ij.ksh/bat—交互式 JDBC 脚本工具
dblook.ksh/bat—用于查看数据库的所有或部分 DDL 的脚本
sysinfo.ksh/bat—显示有关 Java DB 环境的版本信息的脚本
NetworkServerControl.ksh/bat—为在 NetworkServerControl API 上执行命令提供方法的脚本
有关这些实用程序的更多信息,请参见 Derby 工具 和管理指南。
本示例介绍如何使用 NetBeans 5.0 捕获 commander 中 Pointbase 表的 DDL 以及在 Java DB 中创建相同的表。也可以通过使用 commander 工具和 unload database 命令来执行此操作:
./startcommander.sh Do you wish to create a new Database. (Yes (Y) or No (N))? [default: N]: Enter product to connect with: (Embedded (E) or Server (S))? [default: E]: e Enter driver to use? [default: [com.pointbase.jdbc.jdbcUniversalDriver]: Enter database URL? [default: [jdbc:pointbase:embedded:sample]: Enter Username? [default: PBPUBLIC]: Enter Password? [default: PBPUBLIC]: PointBase Commander 5.2 ECF build 294 size restricted version EMBEDDED Interactive SQL command language. SunOS/5.9 (C) Copyright 2004 DataMirror Mobile Solutions, Inc. All rights reserved. Licensed to: Sun_customer_demo_use For commercial version contact PointBase at: pointbase.com PHONE: 1-877-238-8798 (US & CANADA) 1-408-961-1100 (International) WEBSITE: www.pointbase.com SQL>unload database sampledb.sql; SQL> unload database sampledb.sql; SQL> 13 Row(s) Unloaded. (PBPUBLIC.CUSTOMER_TBL) SQL> 4 Row(s) Unloaded. (PBPUBLIC.DISCOUNT_CODE_TBL) SQL> 30 Row(s) Unloaded. (PBPUBLIC.MANUFACTURE_TBL) SQL> 11 Row(s) Unloaded. (PBPUBLIC.MICRO_MARKETS_TBL) SQL> 9 Row(s) Unloaded. (PBPUBLIC.OFFICE_TBL) SQL> 4 Row(s) Unloaded. (PBPUBLIC.OFFICE_TYPE_CODE_TBL) SQL> 15 Row(s) Unloaded. (PBPUBLIC.ORDER_TBL) SQL> 6 Row(s) Unloaded. (PBPUBLIC.PRODUCT_CODE_TBL) SQL> 30 Row(s) Unloaded. (PBPUBLIC.PRODUCT_TBL) SQL> 10 Row(s) Unloaded. (PBPUBLIC.SALES_REP_DATA_TBL) SQL> 10 Row(s) Unloaded. (PBPUBLIC.SALES_REP_TBL) SQL> 52 Row(s) Unloaded. (PBPUBLIC.SALES_TAX_CODE_TBL) SQL> 12 Table(s) Unloaded. SQL> quit;
在上述示例中,unload database 命令的执行结果将被写入 sampledb.sql 文件。sampledb.sql 文件中包含创建必要的表和索引所需的所有 DDL。它还包含将数据插回到数据库中的 DML。通过 commander 命令 RUN 使用生成的脚本可以将数据导入到其他 Pointbase 数据库中。以下是有关生成的文件中的 INSERT 语句和相关数据的示例:
INSERT INTO "ADVENTURE"."CATEGORY" ( "CATID", "LOCALE", "NAME", "DESCRIPTION", "IMAGEURI" ) VALUES( ?, ?, ?, ?, ? ); { 'ISLAND ','en_US','Island Adventures','Experience an island / paradise in a way fit for your needs.','Island_Adventures.gif' 'JUNGLE ','en_US','Jungle Adventures','Experience a jungle / paradise in a way fit for your needs.','Jungle_Adventures.gif' 'MOUNTAIN ','en_US','Mountain Adventures','Experience an / elevated paradise with a view.','Mountain_Adventures.gif' 'ORBITAL ','en_US','Orbital Adventures','Experience a vacuum / paradise with a beautiful view and where no one can hear you scream.', / 'Space_Adventures.gif' 'WESTERN ','en_US','Western Adventures','Enjoy the Wild West. / ','Western_Adventures.gif' 'SOUTH_POLE ','en_US','South Pole Adventures','Experience a / frozen paradise in a way fit for your needs.','SouthPole_Adventures.gif' };
可以轻松地编辑通过 commander unload database 命令生成的文件,以使它仅包含 DDL(例如,编写用于处理 insert 语句的程序并不困难)。在简单测试中,我们可以对 Pointbase 样例数据库使用 unload database 命令,然后编辑生成的脚本,可做出如下更改:
删除所有 CREATE Table 语句末尾的短语 Organization Heap
删除 COMMIT 命令
将布尔变量 datatype 更改为 smallint
删除所有 INSERT 语句和相关数据
接下来,使用简单的 Ant 脚本执行使用 sql 目标的 DDL。最后,对 sun-appserv-samples 数据库重复执行相同的操作,并对生成的 SQL 文件做出如下更改:
对样例数据库做出所有上述更改
删除 create user 命令
删除 SET PATH 命令
将 Decimal 精度从 38 更改为最大 31
将 float 精度从 64 更改为最大 52
当前不支持 CREATE PROCEDURE 的 SPECIFIC 关键字
删除 GRANT 命令
要将 Pointbase Java 过程转换为使用 Java DB,需要对 Java 代码和 CREATE PROCEDURE 语句进行某些更改。可在 Derby 参考手册 中查看有关创建 Java DB Java 过程的信息。Java DB 的下一版将支持布尔变量数据类型。