数据库-PreparedStatement

数据库的执行类似于Java的编译执行过程。

SQL语句翻译为执行计划,才能执行。

SQL语句完全一样的情况下会重用执行计划。

关于执行计划:

1.任何SQL执行过程都是先编译“执行计划”,再执行“执行计划”

2.数据库为了优化性能,在SQL相同时候,会重用执行计划

        -执行计划编译较慢

        -重用执行计划可以提高数据库性能

3.数据库只在SQL语句完全一样的时候才重用相同的执行计划

        -如果SQL语句中有一个字符的更改,也会执行不同的执行计划

        -SQL中一个空格或者一个大小写不同也会创建不同的执行计划

>PreparedStatement 好处是可以重复使用执行计划,提高DB效率

使用步骤:

1。将带参数的SQL发送到数据库创建执行计划

2。替换执行计划中的参数

3。执行执行计划,得到结果


PreparedStatement原理

-Statement主要用于执行静态SQL语句,即内容固定不变的SQL语句。

-Statement每执行一次都要对传入的SQL语句编译一次,效率较差。

-某些情况下,SQL语句只是其中的参数有所不同,其余子句完全相同,适用于PreparStatement

-预防SQL注入攻击

何为注入攻击:

用户输入了含有SQL成分的参数,参数在拼接SQL时造成SQL语句的语义改变!进一步改变SQL语句的执行计划!最终的执行结果就完全改变!

如何避免:

1.拦截用户输入的SQL成分

2.固定执行计划,避免改变执行逻辑

主要是防止statement执行计划时,用户在输入密码是做了sql拼接工作,直接输入成了万能密码。


下面的代码重复执行了同一个执行计划,做到了计划的重用。

插入语句:



查询语句:



更新语句:


猜你喜欢

转载自blog.csdn.net/nishino_shou/article/details/80054632