在Jaspersoft Studio中生成报告时出错,原因是错误准备语句以执行报告查询'

时间:2015-11-25 18:34:06

标签: jasper-reports

我正在尝试使用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,并使用它们来选择数据库中的所有数据。

enter image description here

1 个答案:

答案 0 :(得分:1)

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

  1. 准备好的声明(避免sql注入)这是通过使用

    实现的
    $P{FirstName}
    

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

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

    $P!{FirstName}
    

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

    rcia.inquirer.`First_Name` = '$P!{FirstName}'
    
  3. 首选方法是预备声明,主要是因为这可以帮助您避免sql injection,但如果firstName例如包含<,它也可以帮助您避免错误强>&#39; es。 Al&#39; Capone 或其他可能会破坏您的查询的字符。 \ ecc。