statement 与preparestatement

来源:互联网 发布:软件许可协议文本 编辑:程序博客网 时间:2024/05/17 23:04

区别

1. PreparedStatement对象不仅包含了SQL语句,而且大多数情况下这个语句已经被预编译过,因而当其执行时,只需DBMS运行SQL语句,而不必先编译。当你需要执行Statement对象多次的时候,PreparedStatement对象将会大大降低运行时间,当然也加快了访问数据库的速度。这种转换也给你带来很大的便利,不必重复SQL语句的句法,而只需要更改其中变量的值,便可重新执行SQL语句。选择PreParedStatement对象与否,在于相同的句法的SQL语句是否执行了多次,而且两次之间的差别仅仅是变量不同,如果仅仅执行了一次的话,它应该和普通的对象毫无差异,体现不出她预编译的优越性。 


2.prepareStatement是把你的sql语句预先“编译”好,每次只替换定义的变量,   
  他的作用是减少与数据库的通信量,从而加快执行速度


3. prepareStatement已经予编译,速度比Statement快些   
  prepareStatement解决有关特殊字符插入到数据库的问题。如(',",),?) 

4. Statement   ─   由方法   createStatement   所创建。Statement   对象用于发送简单的   SQL   语句。    
  PreparedStatement   ─   由方法   prepareStatement   所创建。PreparedStatement   对象用于发送带有一个或多个输入参数(   IN   参数)的   SQL   语句。PreparedStatement   拥有一组方法,用于设置   IN   参数的值。执行语句时,这些   IN   参数将被送到数据库中。PreparedStatement   的实例扩展了   Statement   ,因此它们都包括了   Statement   的方法。PreparedStatement   对象有可能比   Statement   对象的效率更高,因为它已被预编译过并存放在那以供将来使用。    
  CallableStatement   ─   由方法   prepareCall   所创建。CallableStatement   对象用于执行   SQL   储存程序   ─   一组可通过名称来调用(就象函数的调用那样)的   SQL   语句。CallableStatement   对象从   PreparedStatement   中继承了用于处理   IN   参数的方法,而且还增加了用于处理   OUT   参数和   INOUT   参数的方法。   

5.创建时的区别: 

   Statement stm=con.createStatement(); 
   PreparedStatement pstm=con.prepareStatement(sql); 
执行的时候: 
    stm.execute(sql); 
    pstm.execute(); 
2: pstm一旦绑定了SQL,此pstm就不能执行其他的Sql,即只能执行一条SQL命令。 
stm可以执行多条SQL命令。 对于执行同构的sql(只有值不同,其他结构都相同),用pstm的执行效率比较的高,对于异构的SQL语句,Statement的执行效率要高。 

原创粉丝点击