Statement和PreparedStatement之间的区别(自学时遇到的问题)

(自学时遇到的问题,写出来以后遇到问题好来查找)
1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. Statement 每执行一次都要对传入的 SQL 语句编译一次,效率较差。
2.使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。
PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处。
3.statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译,   preparedstatement支持批处理。
4.PreparedStatement 是接口,继承自 Statement 接口
String updateString = "UPDATE COFFEES SET SALES = 75 " + "WHERE COF_NAME LIKE ′Colombian′";
stmt.executeUpdate(updateString);


PreparedStatement updateSales = con.prepareStatement("UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ? ");
updateSales.setInt(1, 75);
updateSales.setString(2, "Colombian");
updateSales.executeUpdate();

不会有SQL注入的危险
之前用过,没事多看看

进行数据库插入操作的时候使用 PreparedStatement 更好,好处如下:

  •  1.PreparedStatement可以写动态参数化的查询;
  •  2.PreparedStatement比 Statement 更快;
  •  3.PreparedStatement可以防止SQL注入式攻击



数据库执行 SQL 语句过程

在数据库执行 SQL 语句过程中,制定执行计划开销巨大。
数据库本身具备 SQL 缓存功能,可以对 statement 的执行计划进行缓存,以免重复分析。其缓存原理是使用 statement 本身作为 key 并将执行计划存入与statement 对应的缓存中,对曾经执行过的 statements,再运行时执行计划将重用。
SELECT a, b FROM t WHERE c = 1;
再次向数据库发送相同的 statement 时,数据库会对先前使用过的执行计划进行重用,降低开销。
但是,如下两条语句被视作不同的 SQL 语句,执行计划不可重用:
SELECT a, b FROM t WHERE c = 1;
SELECT a, b FROM t WHERE c = 2;
这就是为什么要使用 PreparedStatement:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值