Java开发基础-JDBC-核心对象的使用—02(1)

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【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开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值