FusionCharts 技术文档-Jsp+数据库画图

http://docs.fusioncharts.com/charts/

 

用数据库中的数据绘图

在本节中,我们将告诉你如何使用FusionCharts的XT和JSP包含在数据库中的数据绘制图表。The code examples contained in this page are present in Download Package > Code > J2EE > DBExample folder.
The database scripts are present in Download Package > Code > J2EE > DB.

数据库结构:

 

 

 

包括两个表:Factory_Master和Factory_Output

1、数据库配置

 

数据库配置在文件夹Download Package > Code > JSP > META-INF > context.xml file下。在这里,我们需要指定数据库名,用户名和密码来访问数据库。我们的例子中,我们已经使用了MySQL数据库。我们假设您已经创建了数据库与的名称factorydb,用户名root,没有密码(您可以根据您的实际情况进行更改)。

一旦做到这一点,我们需要创建所需的表。 SQL脚本“FactoryDBCreation.sql”在文件夹Download Package > Code > JSP > DB下,将创建数据库有两个表和样本数据。需要注意的是,这些脚本将无法创建外键关系。你将不得不手动更改表创建关系,如果你觉得有必要。

一旦做到这一点,我们UTF8例子所需的表。所需的SQL脚本的“UTFExampleTablesCreation.sql”是在 Download Package > Code > JSP > DB文件夹。你可以运行这个脚本在你的MySQL - 这将改变数据库使用UTF8作为默认的字符集,创建Japanese_Factory_Master表并插入样本数据到他的表中。

 

2、为数据字符方法(Data String Method)建立JSP页面

 

BasicDBExample.jsp页面(in DBExample folder):

 

实现了以下功能:

加入javascript 类便于嵌入FusionCharts,这是通过设置的变量的值的jsPath来实现的,因此该模板可以包括脚本。

<c:set var="folderPath" value="http://www.cnblogs.com/FusionCharts/"/>
<c:set var="jsPath" value="${folderPath}" scope="request"/>

 

接下来,我们声明用于数据库连接的数据源。对于这一点,,我们已经使用了来自jstl的标签sql。这里的数据源是:jdbc/ FactoryDB。

<sql:setDataSource dataSource="jdbc/FactoryDB"/> 

 

此数据源已在应用程序中的context.xml中定义。

然后我们使用sql:query标签,执行查询以从数据库获取所有的工厂列表和他们的总产量。
然后,我们执行的查询来获取工厂列表:

<c:set var="strQuery" value="select * from Factory_Master"/> 
<sql:query var="entries" sql="${strQuery}"> </sql:query>

 

我们遍历这个查询的结果集(工厂名单)和在遍历中我们执行另一个查询来获取特定工厂的总产量:

<c:set var="strQuery2" value="select sum(Quantity) as TotOutput from Factory_Output 
 where FactoryId=${factoryId}"/>
<sql:query var="factoryDetailEntries" sql="${strQuery2}"> </sql:query>

 

因此,我们已经知道了如何使用jstl sql标签,以得到jsp和运行的查询的一个连接。

此后,我们通过迭代(iterating)结果集并将它存储在strXML变量中,得到了XML数据文档。

最后,我们通过使用fc:render标签和传递strXML与其他的属性给它渲染图表。

请注意:在这个jsp中,对于检索数据,我们已经写了的完整代码。在理想的情况下,数据库连接和数据检索的代码应该是存在于bean类中。

在我们的的其他的数据库的例子中,我们已经使用了这种方法。

现在,当您运行该代码时,你会得到一个输出作为下:

 

 

 

 

 

如果你是无法看到图表,请检查下面的步骤。

 

如果你得到一个JavaScript错误消息,说:“'FusionCharts的'是未定义的”或类似的东西(取决于浏览器)

 

    *检查如果你复制FusionCharts.js,(默认情况下,FusionCharts的文件夹中)在合适的位置。

    *检查这个JavaScript文件的路径是否正确在你的页面,下的<head>元素。

 

SWF影片不中或无图

当观看你的页面中包含图表,如果你看到在你的浏览器中,无尽的加载进度条或“电影未加载”如果右键菜单(右击的地方应该是图表)显示,请检查以下:

 

    *请检查您是否已经复制FusionCharts的文件夹,所有的SWF图表文件中存在,在正确的位置。

    *检查,如果SWF在您的网页上提供的路径是正确的。

    *如果你的工作区分大小写的文件系统作业系统检查路径和SWF文件的情况下,。

    *检查您是否已经安装在你的机器上安装Adobe Flash Player 8(或以上)。

    *请检查您是否已经启动浏览器来显示ActiveX控件。通常情况下,所有的浏览器都启用闪光灯。

 

在加载数据“的消息”错误

如果你得到一个“错误加载数据”的消息,在图表中,这意味着FusionCharts的XML数据找不到指定的URL。在这种情况下,检查以下内容:

 

    *检查如果实际上已经提供dataURL的或dataXML。如果你不提供,FusionCharts的寻找一个默认data.xml文件相同的路径。然而,如果还没有找到,它显示“错误在加载数据”的错误。

    *如果您使用方法dataURL,将此网址粘贴在浏览器中检查它是否返回一个有效的XML。确保没有任何脚本或超时错误,正在返回一个有效的XML。另外,还要确保XML是不是夹杂着HTML内容。干净的XML数据提供页面应该返回 - 甚至没有的HTML中或<BODY>的标签。

    *如果您已经从FusionCharts的参数传递给您的dataURL数据提供商页面,确保他们了urlencoded的dataURL,提供FusionCharts的。例如,如果您的dataURL需要将Data.asp的?ID = 43&SUBID = 454,你就需要进行URL编码,使之成为数据的%2Easp%3Fid%3D43%26subId的%3D454。只有这样,FusionCharts的URL调用合适的参数,附加到它。

    *当使用dataURL方法,确保SWF文件和数据提供商页面上相同的子域。由于Flash的沙箱安全模型,它不能从外部域访问数据,除非另有配置。

 

“无效的XML数据”消息

如果你得到一个“无效的XML数据”的消息,这意味着XML数据文件的格式不正确。再次检查常见的错误,如:

 

    *不同标签的情况下。 <chart>应该结束</图表> </图>或</图>

    *缺少任何属性的开/关引号。例如,图表标题=每月销售'应该是<图表标题='每月销售'

    *缺少结束标记的任何元素。

    *如果你使用任何特殊字符在XML,确保他们正确的编码。喜欢,在dataXML方法,需要编码%,25%&26%等。在方法dataURL,可以提供最直接的字符,而不需要编码。

    *在dataXML的方法,检查为冲突'(XML属性字符)和“(HTML参数字符),例如,如果您使用的是直接的HTML嵌入方法,使用”HTML参数,那么你需要确保所有的XML属性使用容器。例:<参数名称=“FlashVars的”价值=的“<chart showLabels='1' showValues​​='1'> ... </图表>”/>

    *如果你的报价为您的数据的一部分,XML编码'示例:<set name='John's House' />

    * XML中的错误是什么,要获得更多的信息,您可以使用调试窗口(解释下),或在你的浏览器打开XML。

 

如果不使用任何上述步骤解决您的错误,请尝试使用内置调试器。要知道更多关于调试,请参阅FusionCharts的文档。

posted @ 2013-04-27 09:25  Leechee Tang  阅读(364)  评论(0编辑  收藏  举报