【问题标题】:FindsBug Warning:A prepared statement is generated from a nonconstant StringFindsBug 警告:从非常量字符串生成准备好的语句
【发布时间】:2015-09-03 10:45:18
【问题描述】:

我收到 findsbug 警告,例如“从非常量字符串生成准备好的语句”。我的 Scenerio 喜欢

//My code
 public static int updateSQL(String sql) throws StoreException {      
      PreparedStatement statement = null;
      statement = connection.prepareStatement(sql);  //shows violation here
}

我通过方法的参数得到“sql”。如何纠正这个警告?请帮助我解决这个问题。

【问题讨论】:

  • PreparedStatement 语句 = connection.prepareStatement(sql); ?
  • Doc 警告可能的 sql 注入,解决方案和替代选项在this question中讨论

标签: java sql findbugs


【解决方案1】:

好吧,在这种情况下,我建议忽略此警告。它的优先级较低。这种特定错误模式的低优先级报告实际上大多是垃圾。在我看来,不应该报告它,因为 FindBugs 能够更进一步,看看 updateSQL 方法是否总是用常量字符串调用(在这种情况下你没有问题)(在这种情况下,特定的地方没有-constant 字符串被使用将被报告)。我向我们的追踪器提交了bug report

【讨论】:

    【解决方案2】:

    我认为这不是一个严重的警告。我在尝试使用其中一部分是动态的 SQL 查询时收到了同样的警告(随场合而变化)。没有适当的方法可以避免这种情况。所以你可以避免它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-27
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多