PreparedStatement继承自Statement:[通过源码可知]
========================================
===================================================
区别:
PreparedStatement | Statement | |
代码可读性和可维护性 | 将sql语句与参数分离,可读性高 | sql语句与参数混合拼接,可读性差,拼接sql语句易出错 |
执行性能 | 语句在被DB的编译器编译后的执行代码被缓存下来 ,那么下次调用时只要是相同的预编译语句就不需要编译, 只要将参数直接传入编译过的语句执行代码中(相当于一个函数效果)就会得到执行, 相同操作sql可以复用,效率高,另外支持批处理操作 | Statement的语句中,即使是相同一操作,因为数据内容不一样,每执行一次都要对传入的语句编译一次.效率低 |
安全性 | 不存在恶义SQL【sql参数注入】安全问题 select * from emp where ename= '随意' and sal = ' ';添加' or '1' = '1后 select * from emp where ename= '随意' and sal = ' ' or '1' = '1'; 使用预编译语句.传入的任何参数内容就不会和原来的语句发生任何匹配的关系. 只要全使用预编译语句,你就用不着对传入的数据做任何过虑. | 存在恶义SQL【sql参数注入】安全问题 select * from emp where ename= '随意' and sal = ' '; 添加 ' or '1' = '1后 select * from emp where ename= '随意' and sal = ' ' or '1' = '1'; 执行类似如上sql会出现绕过验证访问数据库中数据, 使用普通的Statement,有可能要对恶意sql,做费尽心机的判断和过虑. |
在JDBC应用中,具有一定开发经验的开发者,就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement。
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**