SQL语句的执行:Statement、PrepareStatement、CallableStatement

其他1条回答---------------


 Connection 接口中的三个方法可用于创建这些类的实例。下面列出这些类及其创建方法:

  (1) Statement ─ 由方法 createStatement 所创建。Statement 对象用于发送简单的SQL 语句。
  (2) PreparedStatement ─ 由方法 prepareStatement 所创建。
  (3) PreparedStatement 对象用于发送带有一个或多个输入参数( IN 参数)的 SQL 语句。PreparedStatement 拥有一组方法,用于设置 IN 参数的值。

  执行语句时,这些 IN 参数将被送到数据库中。PreparedStatement 的实例扩展了 Statement ,因此它们都包括了 Statement 的方法。

  PreparedStatement 对象有可能比 Statement 对象的效率更高,因为它已被预编译过并存放在那以供将来使用。

  CallableStatement ─ 由方法 prepareCall 所创建。CallableStatement 对象用于执行 SQL 储存程序 ─ 一组可通过名称来调用(就象函数的调用那样)的SQL 语句。CallableStatement 对象从 PreparedStatement 中继承了用于处理 IN 参数的方法,而且还增加了用于处理 OUT 参数和 INOUT 参数的方法。

  以下所列提供的方法可以快速决定应用哪个 Connection 方法来创建不同类型的SQL 语句:

       createStatement 方法用于:简单的 SQL 语句(不带参数).

       prepareStatement 方法用于: 带一个或多个IN 参数的 SQL 语句 经常被执行的简单 SQL 语句.

       prepareCall 方法用于: 调用已储存过程













2013-06-01 17:46热心网友
它们是JDBC提供的类:statement 与preparestatement 区别 1. 
PreparedStatement对象不仅包含了SQL语句,而且大多数情况下这个语句已经被预编译过,因而当其执行时,只需DBMS运行SQL语句,而不必先编译。当你需要执行Statement对象多次的时候,PreparedStatement对象将会大大降低运行时间,当然也加快了访问数据库的速度。这种转换也给你带来很大的便利,不必重复SQL语句的句法,而只需要更改其中变量的值,便可重新执行SQL语句。选择 PreParedStatement对象与否,在于相同的句法的SQL语句是否执行了多次,而且两次之间的差别仅仅是变量不同,如果仅仅执行了一次的话,它应该和普通的对象毫无差异,体现不出她预编译的优越性。 2.prepareStatement是把你的sql语句预先“编译”好,每次只替换定义的变量,  
他的作用是减少与数据库的通信量,从而加快执行速度,主要用在循环执行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   参数的方法。   
   
以下所列提供的方法可以快速决定应用哪个   Connection   方法来创建不同类型的   SQL   语句:   
   
      createStatement   方法用于:    
    
简单的   SQL   语句(不带参数)   
   
prepareStatement   方法用于:   
   
带一个或多个   IN   参数的   SQL   语句   
    
经常被执行的简单   SQL   语句    
   
prepareCall   方法用于:   
调用已储存过程 Statement用法 stmt.executeUpdate("insert into tb_name (col1,col2,col2,col4) values ('"+var1+"','"+var2+"',"+var3+",'"+var4+"')"); prepareStatement用法 
perstmt = con.prepareStatement("insert into tb_name (col1,col2,col2,col4) values (?,?,?,?)"); 
perstmt.setString(1,var1); 
perstmt.setString(2,var2); 
perstmt.setString(3,var3); 
perstmt.setString(4,var4); 
perstmt.executeUpdate(); 
Statement没有设置缓存,prepareStatement有,并且一次性可以插入n个数据 利用PreparedStatement对象提高数据库的总体效率       
  在使用PreparedStatement对象执行SQL命令时,命令被数据库进行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个 PreparedStatement对象时,它就会被再解析一次,但不会被再次编译。在缓冲区中可以发现预编译的命令,并且可以重新使用。在有大量用户的企业级应用软件中,经常会重复执行相同的SQL命令,使用PreparedStatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行PreparedStatement任务需要的时间长于Statement任务,我会建议在除动态SQL命令之外的所有情况下使用PreparedStatement对象
评论  |  3  不给力
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值