【问题标题】:Error generating report in Jaspersoft Studio due to 'Error preparing statement for executing the report query'由于“为执行报告查询准备语句时出错”,在 Jaspersoft Studio 中生成报告时出错
【发布时间】:2016-07-04 04:05:46
【问题描述】:

我正在尝试使用 Jaspersoft Studio 插件在 Eclipse 中生成多个 jasper 报告。

我有4个参数要传入,我自己手动添加输入参数。

当我运行预览时它给我错误生成报告由于

'Error preparing statement for executing the report query: 
SELECT rcia.inquirer.`First_Name`,
 rcia.inquirer.`Middle_Name`,
 rcia.inquirer.`Last_Name`,
 rcia.inquirer.`Father_Full_Name`,
 rcia.inquirer.`Mother_Full_Name`,
 rcia.inquirer.`Sponsor_First_Name`,
 rcia.inquirer.`Sponsor_Last_Name`,
FROM rcia.inquirer
WHERE 
 rcia.inquirer.`First_Name` = '$P{FirstName}' 
 AND rcia.inquirer.`Last_Name` = '$P{LastName}''

我不确定为什么会收到此错误。正在使用正确的 SELECT 查询吗?我传入参数 FirstName 和 LastName 并使用它们来选择数据库中的所有数据。

【问题讨论】:

  • 尝试改用$P!{}

标签: jasper-reports


【解决方案1】:

在 jasper 报告中执行查询时,您可以使用:

  1. 准备好的语句(避免sql注入)这是通过使用实现的

    $P{FirstName}
    

    这种情况下的查询需要没有限定符'

    rcia.inquirer.`First_Name` = $P{FirstName} 
    
  2. 字符串替换(作为@mkl 评论)

    $P!{FirstName}
    

    这种情况下的查询需要的是限定符(因为它是一个简单的字符串替换)

    rcia.inquirer.`First_Name` = '$P!{FirstName}'
    

首选的方式是Prepared statement,主要是因为这将帮助您避免sql injection,但如果firstName例如包含' es。 Al'Capone,或其他可能破坏您的查询的字符。 \ecc。

【讨论】:

  • 做到了!哇非常感谢你。这只是不需要的引号
猜你喜欢
  • 1970-01-01
  • 2020-08-22
  • 2022-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 2023-03-15
相关资源
最近更新 更多