当前位置:   article > 正文

[疯狂Java]JDBC:PreparedStatement预编译执行SQL语句_java jdbc 预编译 远吗

java jdbc 预编译 远吗

1. SQL语句的执行过程——Statement直接执行的弊病:

    1) SQL语句和编程语言一样,仅仅就会普通的文本字符串,首先数据库引擎无法识别这种文本字符串,而底层的CPU更不理解这些文本字符串(只懂二进制机器指令),因此SQL语句在执行之前肯定需要编译的;

    2) SQL语句的执行过程:提交SQL语句 -> 数据库引擎对SQL语句进行编译得到数据库可执行的代码 -> 执行SQL代码;

    3) 现在再来看Statement的执行机制:

         i. Statement的execute系列方法直接将SQL语句作为参数传入并提交给数据库执行;

         ii. 也就是说每提交一次都需要先经过编译然后再执行;

         iii. 那么有一个最大的问题就是如果一条SQL语句需要再短时间内被反复执行,那么每次都需要经过编译这样不是效率非常非常低吗??

!!可能你会问哪有需要反复大量执行的相同语句呢?仔细一想可能是的,因此上面说的并不完全精确,精确地讲应该是反复执行一系列模型相似的语句,比如:

insert into table1 values(1, "Peter");
!你每次执行时只是values中的值不同,但是总体的语句还是insert into语句,那么你每次提交都需要编译岂不是会把大把时间浪费在编译上面了,非常不值;


2. PreparedStatement的预编译机制——类似于Properties配置文件:

    1) 通过Connection(conn)还可以得到另一种SQL语句对象,即PreparedStatement,该方法就是:PreparedStatement Connection.prepareStatement(String sql);

    2) 注意细节:这里就不是create了,而是准备一个SQL语句句柄,精确地讲是一个PreparedStatement语句句柄,并且创建该句柄时直接传入了SQL语句;

    3) 预编译机制:

         i. 调用prepareStatement时会直接将该SQL语句提交给数据库进行编译,得到的Prepared

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/757370
推荐阅读
相关标签
  

闽ICP备14008679号