天天看点

preparedstatement和statement的区别?

1.preparedstatement是继承自statement.  

  • PreparedStatement extends Statement

2.preparedstatement适合执行动态sql,statement适合执行静态sql.

其实说到动态sql,,就要说到数据库中的绑定变量,硬解析,软解析和执行计划。

绑定变量时解决硬解析的利器。

硬解析:就是一条没有执行过的sql。数据库首先对他进行语法分析和解析,过后,根据分析的信息生成最好的执行计划,然后执行。

软解析:就是已经存在了一样的sql语句了

绑定变量实质就是变量。类似于我们是用过的替代变量(占位符)。就是在sql语句中使用变量,通过改变变量的值来得到不同的结果。

sql语句是分为动态部分和静态部分的。而动态部分在一般的情况下,对执行计划的影响是微乎其微的。所以同一个sql语句有不同动态部分生成的执行计划是相同的。

优点:

使用动态绑定,可以减少sql的解析,从而减少了数据库引擎在sql解析上资源的消耗。提高了执行效率和可靠性。减少对数据库的访问实际上就是减少了数据库的工作量

缺点:

可能长时间使用动态sql,由于参数的不同。可能sql的执行效率不同。

preparedstatement和statement的区别?