准备好的声明的好处

时间:2014-04-08 21:34:54

标签: java sql prepared-statement

有人可以提供一些理由说明为什么使用PreparedStatement更好,而不是将SQL语句设置为该变量的String?

由于

2 个答案:

答案 0 :(得分:2)

PreparedStatement保护您免受sql-injections。您可以在下面找到所有详细信息:https://stackoverflow.com/a/8265319/3444240

答案 1 :(得分:0)

真的有两个原因。首先是安全,第二是速度。

DBMS在没有参数的情况下编译预准备语句。稍后,当提供参数时,DBMS只需输入值,并且不必依赖正确的引用来说明字符串与语句其余部分之间的差异。这有助于缓解SQL注入攻击。因为注释说明符在此上下文中没有特殊含义。

其次,由于编译了语句,因此已经创建了执行计划,并且可以在执行之前准备好执行计划,并且可以重复使用。对于SQL字符串,每次都需要重新创建执行计划。这导致一些减速(不多但会很快加起来)。

一个体面的概述是http://en.m.wikipedia.org/wiki/Prepared_statement