后者的效率比前者高
在使用preparedStatement对象执行sql时候
命令被数据库编译和解析,然后被放到命令缓冲区,
然后每当执行同一个preparedStatement时候,他就被再解析一次,
但不会在编译,在缓冲区中可以发现预编译的命令,并且可以重新使用。
如果你要写Insert update delete
最好使用preparedStatemen在有大量用户的企业级应用软件中,经常会执行相同的sql
使用preparedStatement会增加整体的性能。
preparedstatement能有效防止SQL注入
注入漏洞是由于在参数值改变了sql的执行逻辑,例如
//username正常情况下应该是一个用户名只包含数字或者英文字母,
//但是当用户填写的是下面的串的时候,注入漏洞就发生了
String username=" a' or 1=1 ";//注意:此时的1=1是永真条件
String pssword="xxx";
String sql="select * from users where password='"+password+"' and user_name = ' "+username;