Matcher.quoteReplacement与preparedstatement

时间:2011-03-13 18:41:33

标签: java mysql sql jdbc code-injection

在我的项目中,我必须根据传递的表创建插入语句。 所以我有两个选择 1)编写准备好的报表并批量运行 2)在表值(..),(..),(..)

中创建插入

如果我使用Matcher.quoteReplacement()来转义值,我想知道更喜欢(1)而不是(2)的原因

提前致谢

1 个答案:

答案 0 :(得分:3)

Matcher.quoteReplacement不是为了引用SQL字符串,因此您不能确定使用它来避免SQL插入。但即使你有一个有效的引用功能,准备好的陈述仍然会有更好的原因有几个原因:

  • 您无需担心忘记引用输入
  • 你不想采取快捷方式而不引用你“知道”安全的价值
  • 数据库可以缓存执行计划,以避免使用不同的参数解析类似的SQL查询,从而提高性能
  • 代码更具可读性(恕我直言)