我正在使用名为runjasper.jar
的工具来填充JRXML文件。在该文件中,我有一个名为querywhere
的参数。该字符串将通过$P!{querywhere}
附加到Connection SQL(MySQL DB),但是我通过使用一些字符遇到了一些问题。例如:"
,'
和(
等。
我在NetBeans中打开了Java文件进行调试。在该行:
JasperPrint print = JasperFillManager.fillReport(report, parameters, conn);
Parameters是一个字符串,名称为querywhere
等于:
WHERE my_company_id ='12345'
(从NetBeans调试器复制)可以。
如果我打印Reportvariable
$P{querywhere}
在报告中,我将有这样一行:
WHERE m5_pdc.m5_company_id =\'12010901\'
如果我将\所转义的参数设置为
WHERE my_company_id =\'12345\'
$P{querywhere}
参数是:
WHERE my_company_id =\\'12345\\'
所以:简短的问题,我该如何传送像这样的字符串:
WHERE my_company_id ='12345'
到报告。
[任何想法如何转移"
和'
这样的字符?在这种情况下,转义字符\
似乎无效。
谢谢您和最诚挚的问候
基督徒
您可以使用这样的表达式:jrxml文件中的[SELECT .. FROM .. WHERE strAttr=$P{strFilter}
。
报告模板的片段(jrxml文件):
<parameter name="strFilter" class="java.lang.String"/>
<queryString>
<![CDATA[SELECT city FROM address WHERE city=$P{strFilter}]]>
</queryString>
<field name="city" class="java.lang.String"/>
此代码适用于带有单引号,双引号和括号符号的字符串:
Map<String, Object> params = new HashMap<String, Object>();
JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
//params.put("strFilter", "Berl)in");
//params.put("strFilter", "Muni\"ch");
params.put("strFilter", "Stuttga'rt");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, connection);
JasperExportManager.exportReportToPdfFile(jasperPrint, pdfFileName);
或者您可以使用如下表达式:[SELECT .. FROM .. WHERE $P!{whereClause}
。
报告模板的片段(jrxml文件):
<parameter name="strFilter" class="java.lang.String"/>
<parameter name="whereClause" class="java.lang.String"/>
<queryString>
<![CDATA[SELECT city FROM address WHERE city=$P{strFilter} $P!{whereClause}]]>
</queryString>
此代码适用于带有单引号,双引号和括号符号的字符串:
Map<String, Object> params = new HashMap<String, Object>();
JasperReport jasperReport = JasperCompileManager.compileReport(reportSource);
//params.put("strFilter", "Berl)in");
//params.put("whereClause", "AND city = 'Berl)in'");
//params.put("strFilter", "Muni\"ch");
//params.put("whereClause", "AND city = 'Muni\"ch'");
params.put("strFilter", "Stuttga'rt");
params.put("whereClause", "AND city = 'Stuttga''rt'");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, connection);
JasperExportManager.exportReportToPdfFile(jasperPrint, pdfFileName);
您可以在hasmap中传递参数时将变量作为字符串,在ireport中创建参数并在属性中将其声明为字符串。您在哈希映射参数中设置的字符串值将替换为该字符串值。