Java基础——Statement与PrepareStatement

来源:互联网 发布:谷歌浏览器安全吗 知乎 编辑:程序博客网 时间:2024/06/08 15:50

Statement

      Statement是Java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。Statement对象,用于执行不带参数的简单SQL语句。用于执行静态 SQL 语句并返回它所生成结果的对象。


     在默认情况下,同一时间每个 Statement对象在只能打开一个 ResultSet对象。因此,如果读取一个 ResultSet对象与读取另一个交叉,则这两个对象必须是由不同的 Statement对象生成的。如果存在某个语句的打开的当前 ResultSet对象,则 Statement接口中的所有执行方法都会隐式关闭它。


       Statement对象用于将 SQL语句发送到数据库中。实际上有三种 Statement对象,它们都作为在给定连接上执行 SQL语句的包容器:StatementPreparedStatement(它从 Statement继承而来)和 CallableStatement(它从 PreparedStatement继承而来)。它们都专用于发送特定类型的 SQL语句:Statement对象用于执行不带参数的简单 SQL语句;PreparedStatement对象用于执行带或不带 IN参数的预编译 SQL语句;CallableStatement对象用于执行对数据库已存在的存储过程的调用。


       Statement接口提供了执行语句和获取结果的基本方法。PreparedStatement接口添加了处理 IN参数的方法;而CallableStatement添加了处理 OUT参数的方法。

 

PrepareStatement   

       PreparedStatement对象已预编译过,所以其执行速度要快于 Statement对象。因此,多次执行的 SQL语句经常创建为 PreparedStatement对象,以提高效率。


     作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。另外它还添加了一整套方法,用于设置发送给数据库以取代 IN 参数占位符的值。

 

CallableStatement

 

       CallableStatement对象为所有的DBMS 提供了一种以标准形式调用已储存过程的方法。已储 存过程储存在数据库中。对已储存过程的调用是CallableStatement对象所含的内容。这种调用是 用一种换码语法来写的,有两种形式:一种形式带结果参,另一种形式不带结果参数。结果参数是 一种输出(OUT) 参数,是已储存过程的返回值。两种形式都可带有数量可变的输入(IN 参数)、 输出(OUT 参数)或输入和输出(INOUT参数)的参数。问号将用作参数的占位符。

 

Statement 或 PrepareStatement

       通过读其他人的代码,可以看到用的大部分都是PrepareStatementPrepareStatement 执行的是预编译语句,预编译语句在被DB的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不用在编译了,对多次插入但数据不同的情况下,使用PrepareStatement能提高很大的性能

     Statement插入1万条数据耗费时间:


 

   PrepareStatement插入1万条数据耗费时间:


 

   

      安全性是PrepareStatement的很大的优势,使用PrepareStatement能尽可能提高数据库的安全性。大家应该都知道sql注入;采用拼串的方式拼的sql语句存在被sql注入的风险;而如果使用预编译语句.则传入的任何内容就不会和原来的语句发生任何匹配的关系,安全性就有了很高的提升。


总结

      虽然PrepareStatementStatement有很多的好处,但是Statement并不是一无是处的。如果插入的sql语句不固定,也没有什么规律那么用PrepareStatement在性能上也没有什么优势。存在即有一定的合理性,所以我们应该根据情况选择合适的方式。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 天猫介入失败怎么办 天猫投诉没用怎么办 天猫被投诉商标侵权怎么办 虚假发货有天猫红包怎么办 淘宝代购是假货怎么办 闲鱼对方不在怎么办 小米商城退款慢怎么办 小米手机第三方拿货是怎么办 oppo手机卡被锁怎么办 下巴粉刺特别多怎么办 苹果6sp手机卡怎么办 苹果手机无服务怎么办 京东买电脑没发票怎么办 买东西发票丢了怎么办 在天猫上买了假货怎么办 苹果发票丢了怎么办 iphone8屏幕摔了怎么办 在手机店买到翻新机怎么办 信用卡网上买东西退款怎么办 在唯品会买到假的护肤品怎么办 天猫买东西发票怎么办 支付宝无法收款怎么办 买到苹果假货怎么办 16周岁怎么办手机分期 淘宝打假扣分了怎么办 买到不合格食品怎么办 买到不合格面膜怎么办 买假货怎么处理怎么办 咸鱼买手机被骗怎么办 华为p9超级卡怎么办 花呗分期退货怎么办 华为荣耀10网咯好卡怎么办 官网买手机坏了怎么办 三星c5发热严重怎么办 iphone7一直重启怎么办 预售商品不发货怎么办 vivo手机跑电快怎么办 手机跑电太快了怎么办 手机home键失灵怎么办 小米手机发货慢怎么办 京东卡1元流量怎么办