Вы можете использовать следующее выражение: SELECT .. FROM .. WHERE strAttr=$P{strFilter}
в файле jrxml.
Фрагмент из шаблона отчета (файл 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);