将字符串放入preparedStatement

时间:2016-11-14 04:09:45

标签: java sql jdbc prepared-statement

我知道使用Statement和plain String是错误的编程,我需要使用preparedStatement来避免SQL注入。 但我可以创建字符串,然后将String放入preparedStatement,或者与使用Statement?

相同

例如:

String sql = "SELECT * FROM users WHERE user_ID = ?";

preparedStatement = connection.prepareStatement(sql);

preparedStatement.setLong(1, userId);

2 个答案:

答案 0 :(得分:2)

您可以使用ps.setString,这与使用原始String查询不同。 PreparedStatement保证在将字符发送到数据库之前转义字符,并且您的查询应该不受sql注入攻击(无论如何都来自String)。

答案 1 :(得分:0)

我们的想法是使用作为输入的参数,而不是构建SQL命令,而不是构建SQL命令,在这种情况下,以下工作正常:

PreparedStatement

如果你不遵守这一点,你仍然会对SQL注入攻击造成伤害,因为你最终会连接字符串。

关于这个主题的好读物是这些链接:

  1. How can prepared statements protect from SQL injection attacks?
  2. http://javarevisited.blogspot.in/2012/03/why-use-preparedstatement-in-java-jdbc.html
  3. How does a PreparedStatement avoid or prevent SQL injection?