【问题标题】:Matcher.quoteReplacement versus preparedstatementMatcher.quoteReplacement 与preparedstatement
【发布时间】:2011-03-13 18:41:32
【问题描述】:

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

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

提前致谢

【问题讨论】:

    标签: java mysql sql jdbc code-injection


    【解决方案1】:

    Matcher.quoteReplacement 不打算引用 SQL 字符串,因此您不能确定使用它来避免 SQL 插入。但即使你有一个有效的引用功能,准备好的语句仍然会更好,原因如下:

    • 您不必担心忘记引用输入
    • 您不会想走捷径,也不会引用您“知道”安全的值
    • 数据库可以缓存执行计划,避免解析具有不同参数的类似 SQL 查询,从而提高性能
    • 代码变得更具可读性(恕我直言)

    【讨论】:

      猜你喜欢
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-24
      • 2010-11-04
      • 2012-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多