1)执行sql效率区别
Statement对象:执行sql,每一次都需要将sql语句发送一次,相对于PreparedStatement对象效率低,不用它的原因 数据库的性能优化-->减少服务器的交互次数(和数据库的交互次数减少)
PreparedStatement对象:预编译对象:执行的参数化的sql,直接先发送给数据库,数据库会进行校验(参数类型,以及参数的字段是哪一列),并且保存在预编译对象中,可以不断的重新赋值;执行sql效率高!
2)是否存在sql注入的区别
Statement对象:执行的sql语句,都是静态化sql,sql存在字符串拼接,就会导致可能出现sql注入,非常不安全!
举例
select * from user where username = ‘ ” + 变量名 + " ' and password ' " + 值 + " ' ;
PreparedStatement预编译对象:每次是在自己内存中直接赋值对应的值,sql语句永远是占位符号?不会造成sql注入问题,非常安全的!
select * from user where username = ? and password = ? ;