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