赞
踩
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
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。