当前位置: 首页 > 面试题库 >

在Jasper中显示CLOB

年高洁
2023-03-14
问题内容

我在Jasper中的查询获得了CLOB数据,但无法在报告中显示它,甚至尝试了在该论坛中找到的一些解决方案。

这两个都不起作用:

new BufferedReader(new InputStreamReader($F{clob_data}.getAsciiStream())).readLine()


$F{clob_data}.getSubString( 1l, ( new Long( $F{clob_data}.length() ) ).intValue() )

甚至调试也没有错误,在Web应用程序中运行它之后,它将显示:

error=net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : 
    Source text : ...
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to oracle.sql.CLOB

我的报告中的CLOB字段:

<field name="clob_data" class="oracle.sql.CLOB"/>

这就是我显示我的CLOB字段的方式:

<textFieldExpression class="java.lang.String"><![CDATA[$F{clob_data}.getSubString( 1l, ( new Long( $F{clob_data}.length() ) ).intValue() )]]></textFieldExpression>

<textFieldExpression class="java.lang.String"><![CDATA[new BufferedReader(new InputStreamReader($F{clob_data}.getAsciiStream())).readLine()]]></textFieldExpression>

没有 textFieldExpression for class="oracle.sql.CLOB"

任何简单的方法来解决这个问题?

更新:我的问题会像这个家伙,仍然没有解决方案:

http://iswwwup.com/t/1b800f433463/how-jasperreports-display-clob-field-with-
html-tags.html


问题答案:

做完了 我发现了一些技巧来解决这个悬而未决的问题。众所周知, Varchar2
仅支持4000个字符。因此,我想出了一种技巧,可以在查询中减少部分CLOB数据,如下所示:

select DBMS_LOB.SUBSTR(clob_field, 4000, 1) as clob_data_1 
select DBMS_LOB.SUBSTR(clob_field, 2000, 4001) as clob_data_2
from table

如您所见,我将我的CLOB数据分别放在clob_data_1和clob_data_2中,因此它仍然充当String。就我而言,我只使用了6000个字符。
DBMS_LOB.SUBSTR 是用于对数据进行子字符串化的oracle函数。

在我的报告中,我可以像下面这样简单地合并此列:

$F{clob_data_1}+$F{clob_data_2}

我希望有了这个解决方案,它可以为像我这样的有类似问题的人提供帮助。



 类似资料:
  • 如何在jasper子报告中显示当前页码?我只做了第一页,变量如下:$V{page_NUMBER}和“(”$V{page_COUNT}“)”,但我们如何在所有子报告中显示?

  • 我的JSF2.0web应用程序旨在生成PDF报告。问题是在资源管理器窗口中没有显示PDF报告。我正在使用eclipse kepler,带有apache-tomcat-7.0.52,并且jasper Ireport的版本是4.8。 我将提供整个java类: 我可以在控制台看到消息,并且页面被刷新,但是没有PDF报告出现在explorer屏幕上 我已经用下面的代码替换了上面的PDF方法,但是徒劳的是,

  • 我已将图像保存在oracle数据库中为BLOB。我的模型类包含Byte[]图像;对应于数据库中的BLOB feild。我必须将数据库中的所有图像导出为PDF格式。在java中,我使用了以下代码: 我需要PDF格式的图像。

  • 这是我的主报告, 我的子报表 我的bean工厂类,bean被填充,但主报表类字段显示,但子报表列表不显示,请帮助,我已经长出了几缕白发,试图解决这个问题

  • 我正在努力让Jasper在图表的条形图上显示值标签。我想生成什么: 我使用Jaspersoft Studio,并在“图表绘图”选项卡中选中了“显示标签”框。出于测试目的,我使用了某种红色和紫色作为项目标签的字体颜色和背景颜色,这在条形图上应该很明显。 我的jrxml文件如下所示: 我还尝试使用定制器,基于一些SO问题: 我没法让它工作,我有上面的条形图,但没有110/760标签。 为了显示这些值,