【问题标题】:How to display CLOB (or BLOB) String in iReport?如何在 iReport 中显示 CLOB(或 BLOB)字符串?
【发布时间】:2014-05-10 20:54:09
【问题描述】:

我需要在 iReport 中使用的文本字段中显示超过 4000 个字符的 CLOB 字段。我正在使用 iReport 5.5.0 版,我尝试将 CLOB 转换为 InputStream 但它不起作用,我得到的只是:

java.io.ByteArrayInputStream@43842a66

我试过 getSubString(long,int) 但它只适用于小于 4000 个字符的字符串。 stringValue() 和 toString() 也不起作用。

感谢您的帮助。

编辑:

Clob.getSubString(long,int) 方法在我后面的测试中运行良好,我不知道为什么它以前不起作用。所以我用了:

$F{FIELD}.getSubString( (long)1, (int)$F{FIELD}.length() )

最终。这可能不是最好的选择,但我认为字符串的最大长度(2147483647)对于该领域来说已经足够了。

【问题讨论】:

    标签: java jasper-reports blob ireport clob


    【解决方案1】:

    在到处寻找之后,我终于找到了解决此问题的方法。 只需如果您使用 Ireport Designer 转到 Report Inspector section -> Fields -> click 要修改的字段,从 Properties 将 Filed Class 更改为 java.lang.String

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,我找到了以下解决方案。

      第一

      将以下语句放在Textfield 表达式中。要注意的是,该字段应该没有回车和换行以显示完整的字段值。我通过sql 查询填充该字段。

      new BufferedReader(new InputStreamReader($F{FIELD_NAME})).readLine()
      

      第二

      在一个类中创建一个方法,其中InputStream 被转换为ByteArrayOutputStream 并将其转换为String,然后在Textfield 表达式中调用此方法并传入CLOB 值。

      在这两种情况下,该字段都应声明为java.io.InputStream

      了解更多details

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-16
        • 2014-12-23
        • 2018-07-15
        • 2011-11-13
        • 1970-01-01
        相关资源
        最近更新 更多