我使用名为“runjasper.jar”的工具来填充jxrml文件。 在那个文件中,我有一个名为“querywhere”的参数。 这个字符串将通过$ P!{querywhere}附加到Connection SQL(mysqlDB),但是通过使用一些字符我得到了一些\问题。 例如:“an”和(等等。
我在netbeans中打开了java文件来调试它。 在那一行:
JasperPrint print = JasperFillManager.fillReport(report, parameters, conn);
parameters是一个带名字的字符串 querywhere 等于:
WHERE my_company_id ='12345'
(从netbeans调试器复制) 没关系。
如果我打印报告变量
$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'
报告。
知道如何转移像“和”这样的字符吗? 似乎逃避char \在这种情况下不起作用。
谢谢你,以及最好的问候
基督教
答案 0 :(得分:3)
您可以在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);
答案 1 :(得分:0)
您可以在hasmap中传递参数时将变量设为字符串,并在ireport中创建参数并在属性中将其声明为字符串。您在哈希映射参数中设置的字符串值将替换它的相同值。