有人可以提供一些理由说明为什么使用PreparedStatement更好,而不是将SQL语句设置为该变量的String?
由于
答案 0 :(得分:2)
PreparedStatement保护您免受sql-injections。您可以在下面找到所有详细信息:https://stackoverflow.com/a/8265319/3444240
答案 1 :(得分:0)
真的有两个原因。首先是安全,第二是速度。
DBMS在没有参数的情况下编译预准备语句。稍后,当提供参数时,DBMS只需输入值,并且不必依赖正确的引用来说明字符串与语句其余部分之间的差异。这有助于缓解SQL注入攻击。因为注释说明符在此上下文中没有特殊含义。
其次,由于编译了语句,因此已经创建了执行计划,并且可以在执行之前准备好执行计划,并且可以重复使用。对于SQL字符串,每次都需要重新创建执行计划。这导致一些减速(不多但会很快加起来)。