I want to pass an entire sql query as a parameter into a jasper report. I tried using $P{QUERY}, but it gave me a mysql syntax error exception. And I want it to be passed during run time. Does anyone know how to do it?
Example code:
try {
Map<String, Object> map = new HashMap<>();
Connection conn = DatabaseConnection.getInstance().getConnection();
map.put("QUERY", "Select u.name, u.status from user_info u where u.user_name = 'Thanuj'");
JasperReport report = JasperCompileManager.compileReport("report1.jrxml");
JasperPrint jp = JasperFillManager.fillReport(report, map, conn);
JasperViewer.viewReport(jp, false);
} catch (JRException ex) {
Logger.getLogger(ReportTest.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(ReportTest.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(ReportTest.class.getName()).log(Level.SEVERE, null, ex);
}
I figured out the answer with some help from my colleague. I had to change the parameter ($P{QUERY}) into ($P!{QUERY}) in the jasper report's xml file (ex; report.jrxml)