频道直达:新闻 - 组网 - 安全 - 服务器 - 存储 - 系统 - 应用 - 开发 - 数据库 - 前沿 - 技术人 - 培训 - 求职 - 读书 - 教程 - 专题 - 产品 - 案例 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

使用JFreeChart显示您的Oracle数据库数据(11)

作者: Dustin Marx/Michael G. Martin 出处:Oracle 2007-10-10 13:14    砖    好    评论   进入论坛
阅读提示:本文讲解如何使用JFreeChart轻松绘制Oracle数据库数据图表,并可以选择多种高质量的图表类型。在本文中,我们将使用Oracle数据库10g快捷版(XE)中的HR模式数据提供一个该过程的示例。

示例 9:使用 XML 为 JFreeChart 提供输入数据

最后一个示例演示如何基于 XML 数据创建 JFreeChart。在本示例中,我们将使用 Oracle 数据库支持以 XML 形式返回表中的数据。通常,当我们只使用 JDBC 数据集即可直接处理关系数据时,我们并不希望将关系数据转换为 XML 进行 JFreeChart 处理。但是,该关系到 XML 转换的特性在本示例中却很有用,因为利用该特性,我们可以使用 HR 模式模拟面向 XML 的数据源。许多源都可以 XML 格式提供数据,包括 XML 数据库(如存储 XML 文档而非传统的标准化关系数据的 Oracle 数据库)、XML Web 服务以及其他产品和库。

在本示例中,我们将收集 HR 模式中有关员工佣金率的信息。我们在此处假定表中佣金值为空的员工没有佣金补偿,因此只绘制了确实收到佣金的人员的佣金率图表。清单 14 显示了与此相关的一般关系数据查询。

清单 14:用于佣金查询的 SQL SELECT

SELECT commission_pct, count(commission_pct)
FROM   employees
WHERE commission_pct IS NOT NULL
GROUP BY commission_pct
ORDER BY commission_pct;

清单 14 中的查询返回收到各个佣金级别(百分比)的员工的人数。总计中不包括未收到佣金的员工。

我们需要提供给 JFreeChart 以生成我们的图表的 XML 数据需要满足 JFreeChart 期望的 XML 语法。在清单 15 中,我们显示了一个在清单 14 中首次列出的查询的修改版本,它部分满足 JFreeChart 对 XML 语法的期望。

清单 15: 使用列别名将查询结果与 JFreeChart 期望的 XML 相匹配

SELECT commission_pct AS "Key"
count(commission_pct) AS "Value" 
FROM   employees
WHERE commission_pct IS NOT NULL
GROUP BY commission_pct
ORDER BY commission_pct

这个新版本的查询重命名在 SELECT 语句中返回的列或使用该列的别名。我们现在不使用 commission_pct 和 count(commission_pct) 作为列标题,而改用这两个列标题的别名,分别称为 Key 和 Value。

虽然清单 15 对该查询进行了修改,但是我们仍然不能以 XML 格式检索数据。清单 16 提供了使用 OracleResultSet 以 XML 格式检索数据库中的数据的 Java 代码。

清单 16: 以 XML 格式获取 Oracle 数据库中的数据

   /**
* Get commission percentage breakdown from database.
    */
public String getCommissionPercentageBreakdownAsXml()
   {
final String QUERY_NUMBER_EACH_COMMISSION_LEVEL =
"SELECT commission_pct AS \"" + DatasetTags.KEY_TAG + "\", " +
"count(commission_pct) AS \"" + DatasetTags.VALUE_TAG + "\" " +
"FROM employees " +
"WHERE commission_pct IS NOT NULL " +
"GROUP BY commission_pct " +
"ORDER BY commission_pct";

OracleXMLQuery qry =
new OracleXMLQuery( getOracleDbConnection(),
QUERY_NUMBER_EACH_COMMISSION_LEVEL);
qry.setRowTag(DatasetTags.ITEM_TAG);
qry.setRowsetTag(DatasetTags.PIEDATASET_TAG);

return qry.getXMLString();
   }

在清单 16 中,我们使用 JFreeChart 提供的静态常量(DatasetTags.KEY_TAG 和 DatasetTags.VALUE_TAG)而非两个列标题的硬编码值(Key 和 Value),因此,在 JFreeChart 的以后版本中,该查询仍将保持与这些常量的任何更改同步。

清单 16 显示了如何使用 OracleXMLQuery 以 XML 格式获得查询数据。setRowTag 和 setRowsetTag 调用很重要,因为利用通过它们,我们可以轻松更改行标记和行集标记以与满足 JFreeChart 期望。如前所述,我们使用 JFreeChart 提供的常量(DatasetTags.ITEM_TAG 和 DatasetTags.PIEDATASET_TAG)指定这些标记的名称。最后,在我们的 OracleXMLQuery 实例上调用 getXMLString 方法以完备的 XML 格式返回所有结果。清单 17 显示该生成的 XML 字符串的内容。

清单 17: 通过 Oracle 数据库查询生成的 JFreeChart 兼容 XML

<?xml version = '1.0'?>
<PieDataset>
<Item num="1">
<Key>0.1</Key>
<Value>6</Value>
</Item>
<Item num="2">
<Key>0.15</Key>
<Value>5</Value>
</Item>
<Item num="3">
<Key>0.2</Key>
<Value>7</Value>
</Item>
<Item num="4">
<Key>0.25</Key>
<Value>6</Value>
</Item>
<Item num="5">
<Key>0.3</Key>
<Value>7</Value>
</Item>
<Item num="6">
<Key>0.35</Key>
<Value>3</Value>
</Item>
<Item num="7">
<Key>0.4</Key>
<Value>1</Value>
</Item>
</PieDataset>

如上面提到的,DatasetTags 常量用于提供 JFreeChart 期望的标记名称 PieDataset、Item、Key 和 Value。由于有了 OracleXMLQuery 类、使用返回列的别名的能力以及 JFreeChart 提供的常量,我们现在已经准备好 XML 文档可以将其填充到 JFreeChart 饼形图中了。

清单 18 显示如何使用 JFreeChart 的 DatasetReader 相应地将准备好的 XML 作为输入数据用于图表生成。


共13页: 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 11 [12] [13] 下一页
【内容导航】
 第 1 页:JFreeChart 简介  第 2 页:下载并“安装”JFreeChart
 第 3 页:示例1:使用饼形图直接绘制 HR 模式数据图表  第 4 页:示例2:使用三维饼形图间接绘制HR模式数据图表
 第 5 页:示例3:在Swing中生成条形图  第 6 页:示例4:在Java Servlet中生成图表
 第 7 页:示例5:使用Cewolf在JSP中生成图表  第 8 页:示例6:使用Apache Batik在SVG中生成图表
 第 9 页:示例7:使用iText在PDF中显示图表  第 10 页:示例8:自定义小图
 第 11 页:示例9:使用XML为JFreeChart提供输入数据  第 12 页:示例9的清单程序
 第 13 页:其他JFreeChart特性
专题
Sun以10亿美元并购开源数据库厂商MySQL
甲骨文Oracle 11g正式发布
Oracle数据库开发之PL/SQL基础应用
Oracle较真SAP-商业管理软件之战一触即发
Oracle数据库开发基础教程
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·SQL Server入门到精通 (查看120205次)
·SQL Server 2008/2005全解 (查看100798次)
·Oracle数据库开发指南 (查看48189次)
·MySQL数据库备份 (查看46621次)
·Oracle SQL 内置函数大全 (查看44460次)
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。