我有一个基于 SQL 查询生成报告的 Web 应用程序。这些 SQL 查询具有 Jasper 报告参数(即 $P{Param})。
在我的 Java 代码中,我使用 PreparedStatement 来执行查询并返回结果集。我使用此结果集并将其更改为 JRResultSetDataSource 以传递给 JasperFillManager.fillReport(JasperReport, parameters, dataSource)。
我使用数据源而不是连接的原因是我可以在 PreparedStatement 上使用 setQueryTimeout。
我的问题是我需要一种方法来用参数映射值填充查询的参数。有没有内置的方法来做到这一点?
前任。
rawSqlString = "SELECT * FROM TABLE WHERE ROW1 = $P{Param}";
filledSqlString = somefunction(sqlString);
ResultSet rs = sqlStatement.executeQuery(filledSqlString);
我不能使用“rawSqlString”,因为它有 $P{Param}。
或者,是否有一种数据源可以简单地存储我可以传递给 JasperFillManager 的未填充 SQL 查询?
通常 JasperFillManager 会处理此问题,但我希望我的查询超时,因此我需要使用 setQueryTimeout,并以某种方式将其转换为 Jasper 可以处理的格式。