PreparedStatement和Statement的区别和关系

1.关系:PreparedStatement是Statement的子类

2.区别:由于Statemet在使用过程中需要手动拼接sql语句,这样就会产生sql注入攻击,什么事sql注入攻击呢?比如:
SELECT * FROM EMP WHERE NAME = "***" AND PASSWORD = ***;
正常情况下我们会输入name = “张三”,password= “123”,但是如果我们这样输入:
name = “张三”,password= 55555 or “1” = “1” ,这样拼接起来的话就是
SELECT * FROM EMP WHERE NAME = "张三" AND PASSWORD = 55555 OR "1" = "1"
这样的话这个sql永远是成功的,等于错误的密码也能登录进去
所以这时候就要用PreparedStatement,使用占位符防止sql注入攻击
SELECT * FROM EMP WHERE NAME = ? AND PASSWORD = ? ;

3.优点:PreparedStatement可以进行预编译,编译一次执行多次,执行效率高

ps:先简单说明一下,后面有时间补充完整代码

猜你喜欢

转载自blog.csdn.net/qq_34589867/article/details/81228222