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取回所有数据。
使用 JDBC
Java 数据库连接性 (JDBC) technology 是一个 Java API,它向 Oracle 数据库提供连接能力,以取回数据,用于填充电子表格。 JDBC API 还有一个特别之处,利用它还可在 Oracle 数据库间建立连接,用于发送 SQL 语句并处理结果。 本文中的程序只使用了这一 API 的部分功能,因为不需要执行 DML 或设置事务处理。 尽管支持所有类型的数据库,但这里我们要将处理限定到一个范围内,该范围内可清晰地映射到 Excel 电子表格。
Oracle JDBC 驱动依赖于 tnsnames.ora 或其他标准的 Oracle 客户连接信息。 只要系统中有 JRE 且 Oracle JDBC 驱动类存在于 CLASSPATH (且网络中有数据库),那么 Java 类就有足够的资源来创建到 Oracle 数据库连接。
classes12.jar 包含 Oracle 专用的 JDBC 驱动和类,它们也是本项目必须的要件。 它应该包含在 CLASSPATH 中,这样您才能够运行该程序。 你一般可以须 <ORACLE_HOME>/jdbc/lib 找到该文件,你也可以从 OTN 中下载 该文件。
OracleConnectionVO 类包含与 JDBC 连接相关的信息和处理。 oracle.jdbc.driver.OracleDriver 将是一个 URL,其形式为 jdbc:oracle:thin:@<serverName@>:@<Oracle Listener Port>:@<Oracle SID>,将通过它来创建连接。
Jakarata POI
正如我在 以前的文章中所述,Jakarta POI FileSystem API 以纯 Java 方式实施 OLE 2 复合文档格式,且通过 HSSF API 可以用 Java 来读写 Excel 文件。 在该篇文章中,使用了这一 API 来读取 Excel 文件。 这里我们将使用它来写一个 Excel 文件。 (POI 也为您提供了打开已有的电子表格并对它进行操作的功能)。 如果你想了解 POI 的列多功能,请参见 “HSSF 特性指南”,其中提供有代码实例,演示了开发人员经常需要的功能。
要创建一个工作表对象,调用以下代码(在 BroadcastDriver 类):
HSSFWorkbook wb = new HSSFWorkbook(fs);
在 POISheetGenerator 类完成调用,以创建工作表,然后它加入工作表中:
HSSFSheet sheet = wb.createSheet(sheetname);
列标题的字体为粗体,配置如下:
HSSFFont boldFont = wb.createFont();
boldFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
HSSFCellStyle boldStyle = wb.createCellStyle();
boldStyle.setFont(boldFont);
在与迭代与结果集相关的列时,将应用上面定义的单元格格式:
row.getCell((short) x).setCellStyle(boldStyle);
要将工作表写入磁盘中,调用以下代码:
OutputStream = new FileOutputStream("output.xls");
wb.write(out);
out.close();
