服务器 频道

多个Oracle数据库创建一个Excel报表

测试和要求

本文所生成的软件是在安装有 Java 运行时环境 (JRE) 1.4.2、运行 Windows 2000 系统的 PC 机上编写和测试完成的。(要了解 JRE 1.5 相关的问题,参见边栏) Java 的设计初衷就是实现平台无关性,所以在任何安装有适当 JRE 的机器上都应该能正常运行。 使用该版本的 JRE,您无需访问其他外部 API(如 Xerces 和 Xalan)就能利用 XML 处理。

初始配置

如果系统中有几种 JRE,那么必须确保正确设置 PATH 环境变量,以调用 1.4.2 或更新版本的 JRE,而非老版本的 JRE。 可在 java.sun.com/j2se/1.4.2/docs/api 中 获取 JRE 1.4.2 版的 Javadoc 文档。

该软件下载中包含的批处理文件中的信息已经进行过更改,可用于 Linux 环境,而且这些信息已经在 Red Hat Linux 上测试通过。 只是对 run.sh 进行了适当的修改,并没有更改并执行 run.bat。 在 Linux 环境中,可使用 OpenOffice.org 的电子表格程序来显示电子表格。

环境设置基本上就是两个环境变量的设置: PATH 和 CLASSPATH。 首先要正确设置 CLASSPATH,以利用提供数据库访问和 Excel 电子表格功能的 API。 使用 run.bat 文件设置这一变量,这样就可以访问相应的 Java 文档(.jar 文件)。 您可能需要将指向 classes12.jar(其中包含 Oracle JDBC 驱动)的路径更改您系统上的正确路径。 在安装许多不同的 Oracle 产品时都将自动安装该文件。如果您系统中没有该文件,本文前面提供有文件的下载链接。 如果 CLASSPATH 不包含这一 jar,当程序试图载入 JDBC 驱动时,会出现错误:

Driver not found: oracle.jdbc.driver.OracleDriver 
    java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

下载的文件中有一个 lib 目录,其中包含有 POI jar (poi-2.5.1-final-20040804.jar)。 如果 CLASSPATH 不包含这一文件,当程序试图创建一个工作表对象时,将出现以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError:
    org/apache/poi/hssf/usermodel/HSSFWorkbook

The broadcast.jar 包含有一些文件,利用它们可以集中这些 API 的功能,然后基于配置的连接和 SQL 查询来 构建电子表格。 配置文件 (config.xml) 应该位于执行 broadcast.jar 的目录中。 如果不是,将出现错误(文件系统路径正确):

java.io.FileNotFoundException: C:\config.xml 
    (The system cannot find the file specified)

XML 配置

从 1.4 版本起,用于 XML 处理的 Java API 就已经加入了 Java 2 平台中。 利用该 API,可通过一系列标准的 Java 平台 API 来处理 XML 文档。 因此,当前项目也就无需另外添加 XML 处理包了。 只使用一个简单的配置文件就可以配置一个 SQL 查询和多个数据库连接。

XML 格式极其适用于配置文件,它使得配置数据易于您理解,可以通过标准的处理方法来顺利访问配置数据。 因为存储在配置文件中的数据很有限,也就不需要担心出现 "file bloat" 的情况。当使用 XML 标记符来标记大量数据时,会出现 "file bloat"。 此外, the hierarchical organization of our configuration data benefits from the organization allowed for through nesting entities in XML. 每个连接节点包含单一的数据,合用后就可以创建一个数据库连接。

下面是一个配置文件的示例:

<?xml version="1.0"?>
    <broadcast>
    <connection-config>
    <database>
    <server-name>server001</server-name>|
    <port>1521</port>
    <sid>ORCL</sid>
    <username>sysdba</username>
    <password>my1manager</password>
    </database>
    <database>
    <server-name>server002</server-name>|
    <port>1521</port>
    <sid>PROD</sid>
    <username>sysdba</username>
    <password>my1manager</password>
    </database>
    </connection-config>
    <sql-statement>select * from v$parameter</sql-statement>
    </broadcast>

XMLConfigVO 类包含与读取和分析该 XML 文档的代码。 调用没有参数的构造器后,类将读取 config.xml 文件并创建一个新的 DocumentBuilderFactory实例。 本例没有使用 DTD(文档类型定义)或模式验证。 该厂生成了一个可供分析的文档对象,如果需要,还可操作该文档。

接下来将选择与 //broadcast/connection-config/database XPath 表达式的节点。 这些节点包含创建数据库连接所需的元素: 服务器名端口、Oracle SID、您名和密码。 最后,将使用//broadcast/sql-statement XPath 表达式进行查询,以获取 SQL 语句。 至此,利用存取器(getter 方法,其形式为 getXXXX())可以从 XMLConfigVO取回所有数据。

0
相关文章