SQL クエリに基づいてレポートを生成する Web アプリケーションがあります。これらの SQL クエリには、Jasper Report パラメーター (つまり、$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);
$P{Param} があるため、「rawSqlString」は使用できません。
あるいは、JasperFillManager に渡すことができる未入力の SQL クエリを単純に格納するタイプのデータソースはありますか?
通常、JasperFillManager はこれを処理しますが、クエリをタイムアウトさせたいので、setQueryTimeout を使用し、何らかの方法でこれを Jasper が処理できる形式に変換する必要があります。