我最近在Web应用程序中再次开始使用预准备语句,我知道不鼓励为所有事务使用预准备语句。我不知道的是什么时候最好使用准备好的陈述。
我已经阅读了何时使用而不使用它们,但没有一个例子真正说明了使用它们的最佳做法。
我试图弄清楚我应该使用哪些数据库调用以及哪些数据库调用不应该。
例如,MySQL网站在下一页Prepared Statements-MySQL
中的“何时使用预准备语句”中提及它答案 0 :(得分:6)
决定是否参加PreparedStatement的一般拇指规则是:
使用准备好的陈述,除非您 有足够的理由不这样做。 编制准备好的声明 在执行之前因此借给 更好的性能,并增加 作为SQL注入的安全性 数据库服务器负责 特殊字符的编码。
根据您引用的文章,我认为准备语句不如普通查询或存储过程有用的原因列表如下:
答案 1 :(得分:2)
为了防止SQL注入,最好在Java中使用预处理语句
答案 2 :(得分:2)
PreparedStatements有两个主要用途:
这两个原因都是非常引人注目的理由,几乎总是可以证明使用PreparedStatement,但是根据你使用数据库的方式,你可能会遇到PreparedStatement不允许你做你想做的事情。
作为这种情况的一个例子,我曾经编写过一个工具,它根据某些抽象的运行时属性动态生成表名,这意味着我必须能够使用可变表名进行SQL查询。你不能得到PreparedStatement那些,所以我不得不使用原始语句和一些预处理技巧来回到利用PreparedStatements进行SQL注入保护。