prepareStatement语句

prepareStatement语句JDBC中的——PreparedStatement预编译原理prepareStatement语句有三大好处:Statement.executeUpdate(“INSERTINTOtb1_students(name,age,sex,address)VALUES(‘”+var1+”‘,'”+var2+”‘,”+var3+”,'”+var4+”‘)”);​prepareStatement=connection.prepareStatement(“INSERTINTOtb1_stud

大家好,又见面了,我是你们的朋友全栈君。

JDBC中的——PreparedStatement 预编译原理

prepareStatement语句有三大好处:

Statement.executeUpdate("INSERT INTO tb1_students (name,age,sex,address) VALUES('"+var1+"','"+var2+"',"+var3+",'"+var4+"')"); 
​
prepareStatement= connection.prepareStatement("INSERT INTO tb1_students (name,age,sex,address) VALUES (?,?,?,?)"); 
prepareStatement.setString(1,var1); 
prepareStatement.setString(2,var2); 
prepareStatement.setString(3,var3); 
prepareStatement.setString(4,var4); 
prepareStatement.executeUpdate(); 

1、提高了代码的可读性和可维护性

很明显可以看出,第一种语句很繁琐,没有第二种语句简单明了,虽然代码是多了几行,但从代码的可读性和可维护性上来看,第二种优于第一种。

2、PreparedStatement尽最大可能提高性能

每一种数据库都会尽最大努力对预编译语句提供最大的性能优化。因为预编译语句有可能被重复调用,所以语句在被数据库(DB)的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中(相当于一个函数)就会得到执行。这并不是说只有一个Connection中多次执行的预编译语句被缓存,而是对于整个DB中,只要预编译的语句语法和缓存中匹配。那么在任何时候就可以不需要再次编译而可以直接执行,而在statement的语句中,即使是相同一操作,而由于每次操作的数据不同,所以使整个语句相匹配的机会极小,几乎不太可能匹配。比如:

INSERT INTO tb1_students (name,age) VALUES('LISI','18'); 
INSERT INTO tb1_students (name,age) VALUES('WANGER','32'); 

即使是相同操作,但因为数据内容不一样,所以整个语句本身不能匹配,没有缓存语句的意义。事实是没有数据库会对普通语句编译后的执行代码缓存,这样每执行一次都要对传入的语句编译一次。 当然并不是所有预编译语句都一定会被缓存,数据库本身会运用一种SQL语句优化策略,比如使用频度等因素来决定什么时候不再缓存已有的预编译结果。以保存有更多的空间存储新的预编译语句。

3、这是最重要的一点:极大地提高了安全性 即使到目前为止,仍有一些人连基本的恶义SQL语法都不知道。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135145.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • JavaScript如何截取指定位置的字符串

    JavaScript如何截取指定位置的字符串我们在日常开发中,经常需要对字符串进行删除截取增加的操作,我们这次说一下使用JavaScript截取指定位置的字符串。**一、使用slice()截取**slice()方法可以通过指定的开始和结束位置,提取字符串的某个部分,并以新的字符串返回被提取的部分。它的参数有两个,start和end。start是必须填写的参数,规定从何处开始选取,如果是负数,就是从尾部倒着开始算。end是可选填写的参数,规定从何处结束选择,如果没有指定end的值的话,只有start,那么就是默认从start一直截取到结束的

  • 基于51单片机控制步进电机正反转

    基于51单片机控制步进电机正反转基于51单片机控制步进电机正反转此次采用uln2003模块来链接步进电机;##步进电机工作原理步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。步进电动机的结构形式和分类方法较多,一般按励磁方式分为磁阻式、永磁式和混磁式三种;按相数可分为单相、两相、三相和多相等形式。因此我们可以控制单片机I/O口的电平来控制步进电机,此次设计中采用四相单拍工作方式,在这种工作方式下,A、

  • arm 体系架构及其工作原理图_arm架构详解

    arm 体系架构及其工作原理图_arm架构详解架构的演变历史我们首先介绍ARMLtd,这里先说的是公司而不是架构。ARM的发展历史非常久远,超乎许多人的想象。首先,我们提供一些背景信息,ARM成立于20世纪90年代末,从另一家位于剑桥的公司分拆而来,那家公司叫做AcornComputers,曾经是英国教育市场的著名个人台式计算机供应商,现已不复存在。80年代中期时,Acorn一个小团队接受了一个挑战,为他们的下一代计…

    2022年10月14日
  • [转]Microsoft SQL Server 2008 安装图集[通俗易懂]

    [转]Microsoft SQL Server 2008 安装图集[通俗易懂]原文:http://blog.csdn.net/ranzj/archive/2008/08/25/2828778.aspx 见下:———————————————————————————————————…

  • 网页实时显示时间_html页面布局代码

    网页实时显示时间_html页面布局代码在html页面实时显示系统时间桌面新建记事本,将下列代码复制粘贴,重命名后缀为.html,保存,用浏览器打开即可<html><head><metahttp-equiv=”Content-Type”content=”text/html;charset=utf-8″/><title>系统时间</title&gt…

  • 如何提取微信公众号文章里边的视频地址[通俗易懂]

    1.首先,找到含视频的公众号文章,复制文章链接地址。2.在电脑端浏览器打开这个链接,在网页空白位置点击右键,然后点击“查看网页源代码”。3.在打开的源代码网页里Ctrl+F输入 v.qq.com(腾讯视频的都是以这个开头的),找到在src后面的链接。4. https://v.qq.com/x/page/*****.html,这个是腾讯视频网址的标准格式,把刚才复制的vid编号替换网址中的星号…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号