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语法都不知道。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Postman使用详解

    一、Postman背景介绍用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的css、html、脚本等简单的网页基本信息,它还可以发送几乎所有类型的HTTP请求!Postman在发送网络HTTP请求方面可以说是Chrome插件类产品中的代…

    2022年4月5日
    52
  • net.sf.json.JSONException: null object_json数组转json对象

    net.sf.json.JSONException: null object_json数组转json对象1简介在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON。JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,同时也易于机器解析和生成、易于理解、阅读和撰写,而且Json采用完全独立于语言的文本格式,这使得Json成为理想的数据交换语言。JSON建构于两种结构:“名称/值”对的集合(ACollectionofna…

    2022年9月22日
    2
  • 解决ajax跨域问题【5种解决方案】「建议收藏」

    解决ajax跨域问题【5种解决方案】「建议收藏」什么是跨域问题?跨域问题来源于JavaScript的”同源策略”,即只有协议+主机名+端口号(如存在)相同,则允许相互访问。也就是说JavaScript只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对JS和ajax的,html本身没有跨域问题。查看浏览器开发者工具Console报错:Failedtoloadhttp://a.a.com:8080/A/…

    2022年8月24日
    9
  • 决策树与随机森林(从入门到精通)[通俗易懂]

    决策树(decisiontree)是一种基本的分类与回归方法,本文主要讨论用于分类的决策树。决策树学习通常包括三个步骤:特征选择,决策树的生成和决策树的修剪。而随机森林则是由多个决策树所构成的一种分类器,更准确的说,随机森林是由多个弱分类器组合形成的强分类器。

    2022年4月17日
    42
  • 【PMP】项目浮动的三种时间「建议收藏」

    【PMP】项目浮动的三种时间「建议收藏」自由浮动时间不影响后续工作最早可以开始时间的前提下,这项工作可以拖延的时间叫做自由浮动时间。总浮动时间不影响项目总工期的情况下活动可以拖延的总时间。项目浮动时间在已经排好的总工期的基础上,领导或者甲方

    2022年8月1日
    7
  • android加密参数定位方法

    android加密参数定位方法作者正在编写一本爬虫逆向相关的书籍《书名还没有想好》。目前刚写了50页,上图是文章目录的一部分,想问一下大家现在对哪阶段的内容会更感兴趣,或者哪部分的内容会更有学习力,或者帮我想个书名。可在本文末留言告知,感谢大家。下面开始本文正文内容。在逆向一个Android程序时,如果只是盲目的分析需要阅读N多代码才能找到程序的关键点或Hook点,本文将分享一下如何快速的找到APP程序的加密参数位置,其实不论是找关键位置、找hook点,找加密参数、代码逻辑追踪,都是类似的处理方法。巧用搜索-静态分析

    2022年5月17日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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