我正在尝试使用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,并使用它们来选择数据库中的所有数据。
答案 0 :(得分:1)
在jasper报告中执行查询时,您可以使用:
准备好的声明(避免sql注入)这是通过使用
实现的$P{FirstName}
在这种情况下,查询需要没有限定符'
rcia.inquirer.`First_Name` = $P{FirstName}
字符串替换(作为@mkl评论)
$P!{FirstName}
在这种情况下,查询需要限定符(因为它是一个简单的字符串替换)
rcia.inquirer.`First_Name` = '$P!{FirstName}'
首选方法是预备声明,主要是因为这可以帮助您避免sql injection,但如果firstName
例如包含<,它也可以帮助您避免错误强>&#39; es。 Al&#39; Capone 或其他可能会破坏您的查询的字符。 \ ecc。