在 jasperreport 中传递 SQL“IN”参数列表

Posted

技术标签:

【中文标题】在 jasperreport 中传递 SQL“IN”参数列表【英文标题】:passing SQL "IN" parameter list in jasperreport 【发布时间】:2011-09-07 18:14:48 【问题描述】:

我正在处理 Jasper 报告,我的查询使用 SQL 'IN' 谓词。

SELECT customer_name AS NAME, 
       id_customer   AS ID 
  FROM customer 
 WHERE customer_role IN ($Proles)

这里的角色参数可以有1个或多个整数值,会在生成jasper报告时动态决定。

谁能帮助我通过Java程序动态设置'roles'参数的值。

【问题讨论】:

【参考方案1】:

Jasper Report 有一个特殊的变量 $X :

select * from customer where $XIN,customer_role,roles

应该可以。 See here 和 here。

【讨论】:

【参考方案2】:

接受的答案中链接到的示例不适合我。

对我有用的替代方法是:

...
WHERE customer_role IN ($Proles)

我用过这个:

...
WHERE customer_role IN ($P!roles)

对于roles 变量,我传入一个包含一个或多个值的字符串,每个值用单引号括起来,用逗号分隔(例如,'1','2','3')。

参考here。

【讨论】:

虽然这会起作用,但它不会使用准备好的语句,因此应用程序可以被SQL injection attacks定位 Petter Friberg,你准备好 jasper-reports 的语句用法示例了吗?我相信接受的答案也不使用准备好的陈述。【参考方案3】:

为了补充@Aaron 响应,您可以在 JasperSoft Studio 中配置一个列表参数(在您的情况下为“角色”),如下所示:

【讨论】:

以上是关于在 jasperreport 中传递 SQL“IN”参数列表的主要内容,如果未能解决你的问题,请参考以下文章

如何将主报表数据源传递给子报表(JasperReports)?

JasperReport子报表参数传递

JasperReport

SQL中in参数在存储过程中传递及使用的方法

如何在 Django 中为“in”SQL 子句传递值列表

我可以使用Java代码在sql语句(Oracle)的IN子句中传递字符串列表吗