Statement,PreparedStatement和CallableStatement的联系和区别

本文介绍了Java中通过Statement、PreparedStatement及CallableStatement三种方式执行SQL的区别。重点对比了它们在执行效率、安全性和代码可读性方面的不同,特别是针对预编译SQL语句和存储过程调用的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

联系:

CallableStatement继承自PreparedSatement,PreparedStatement继承自Statement。

区别:

    1:Statement 每次执行sql语句,数据库都要执行sql语句的编译 ,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement.  

       

    2:PreparedStatement是预编译的,使用PreparedStatement有几个好处  

     a. 在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率要高。  

     b. 安全性好,有效防止Sql注入等问题。  

     c.  对于多次重复执行的语句,使用PreparedStament效率会更高一点,并且在这种情况下也比较适合使用batch;  

     d.  代码的可读性和可维护性。  

       

    3:CallableStatement接口扩展PreparedStatement,用来调用存储过程,它提供了对输出和输入/输出参数的支持。CallableStatement 接口还具有对 PreparedStatement 接口提供的输入参数的支持。  

 

  Statement 对象用于将 SQL 语句发送到数据库中。
    实际上有三种 Statement 对象,它们都作为在给定连接上执行  SQL语句的包容器:     
  
  
  1.       Statement、    
  2.       PreparedStatement(它从 Statement  继承而来)和    
  3.       CallableStatement(它从 PreparedStatement 继承而来)。
它们都专用于发送特定类型的 SQL  语句:
  1.   
  2.     Statement 对象用于执行不带参数的简单 SQL 语句;    
  3.     PreparedStatement 对象用于执行带或不带 IN参数的预编译  SQL  语句;    
  4.     CallableStatement 对象用于执行对数据库已存储过程的调用。
  •    Statement 接口提供了执行语句和获取结果的基本方法。
  •    PreparedStatement 接口添加了处理 IN 参数的方法;
  •    而CallableStatement 添加了处理 OUT 参数的方法。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值