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

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

SELECT customer_name AS NAME, 
       id_customer   AS ID 
  FROM customer 
 WHERE customer_role IN ($P{roles})

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

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

【问题讨论】:

    标签: sql jasper-reports


    【解决方案1】:

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

    select * from customer where $X{IN,customer_role,roles}
    

    应该可以。 See herehere

    【讨论】:

      【解决方案2】:

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

      对我有用的替代方法是:

      ...
      WHERE customer_role IN ($P{roles})
      

      我用过这个:

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

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

      参考here

      【讨论】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-30
        • 1970-01-01
        • 2014-07-16
        • 2022-10-12
        • 2012-03-12
        相关资源
        最近更新 更多