【发布时间】:2013-06-23 08:16:51
【问题描述】:
我刚刚发现我们的代码中有一些地方使用了准备好的语句,即使我们总是处理向表中插入一行。
我想知道在仅插入一行时使用 Prepared Statement 是否有一些开销值得修改此代码以使用 Statement。
【问题讨论】:
标签: java jdbc prepared-statement
我刚刚发现我们的代码中有一些地方使用了准备好的语句,即使我们总是处理向表中插入一行。
我想知道在仅插入一行时使用 Prepared Statement 是否有一些开销值得修改此代码以使用 Statement。
【问题讨论】:
标签: java jdbc prepared-statement
在安全方面,Prepared Statements 专门用于防止 SQL 注入攻击。关于效率,它在很大程度上取决于您正在处理的语句的性质。您可能还会发现这个其他答案很有趣:
【讨论】:
当您使用 PreparedStement 时,不仅查询执行速度更快,还有其他优势。
要记住的重要一点是永远不要构造 SQL 语句 使用未经检查的输入值的字符串连接。创建的 通过 java.sql.Statement 类的动态查询导致 SQL 注射。
【讨论】:
即使您的代码只插入一行,它也可能被多次调用,在这种情况下,PreparedStatement 应该更快。至于Statement,它也需要在执行前编译,所以它几乎没有任何更快的速度
【讨论】:
PreparedStatement 优先于简单的Statement,因为它可以为您提供一些防止 SQL 注入的安全性。
在PreparedStatement 中,每个参数都会检查其类型并自动转义。这意味着插入带有' 的String 将使用PreparedStatement 保存,而在不使用PreparedStatement 时您必须自己转义特殊字符。
此外,您不能在需要 Number 的地方插入一些 String。
【讨论】: