• 两者之间的联系:

    • Statement和PreparedStatement两者都是用来执行SQL查询语句的API之一

    • PreparedStatement接口继承了Statement接口

  • 两者之间的区别:

    • Statement不对SQL语句做处理,直接交给数据库;而PreparedStatement是支持预编译的,会将编译好的SQL语句放在数据库端,相当于缓存.对于多次重复执行的SQL语句,使用PreparedStatement可以使得代码的执行效率更高

    • 使用Statement对象.在对数据库只执行一次存取的时候,用Statement对象进行处理;PreparedStatement对象的开销比Statement大,对于一次性操作并不会带来额外的好处

    • 执行许多SQL语句的JDBC程序产生大量的Statement和PreparedStatement对象,通常认为PreparedStatement比Statement对象更有效

    • Statement的SQL语句使用字符串拼接的方式,非常容易导致出错,且存在SQL注入的风险 Preparedment使用"?"占位符,提升了代码的可读性和可维护性,并且这种绑定参数的方式,可以有效防止SQL注入

      • SQL注入:

        SQL注入就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令

        实例:

        当我们用户在登录时,需要验证用户名和密码,对应后台的SQL语句为: SELECT * FROM tablename WHERE username = "***" AND password = "###", ###为传入的用户名和密码,根据SQL的返回结果来判断登录是否成功.这样就是我们在登录时后台进行的简单步骤

        假如数据库中存在 username 为 123 , password 为 456 的信息,此时在用户登录界面输入信息,当信息与上面的匹配一致时,我们就会登录成功.但是假如我们把输入的password内容改为 111 or 1=1,生成的SQL语句就为 SELECT * FROM tablename WHERE usename = 123 AND password = 111 or 1=1.此时我们并没有输入正确的密码,但是在SQL语句中会判断出password后面的"1=1"为真,所以即使我们没有输入正确的密码,也能登录成功.这就是非法的SQL注入

Statement和PreparedStatement的区别及联系相关推荐

  1. Statement与PreparedStatement的区别

    Statement与PreparedStatement的区别 PreparedStatement预编译SQL语句,性能好. PreparedStatement无序拼接SQL语句,编程更简单. Prep ...

  2. 数据库SQL Server2012笔记(八)——Statement与PreparedStatement的区别,JDBC方式操作数据库...

    1.Statement与PreparedStatement的区别 1)都可用于  把sql语句从java程序中发送到制定数据库,并执行sql语句. 2)区别 直接使用Statement,驱动程序一般不 ...

  3. 浅析Statement和PreparedStatement的区别

    当我们使用java程序来操作sql server时会使用到Statement和PreparedStatement,俩者都可以用于把sql语句从java程序中发送到指定数据库,并执行sql语句.那么如何 ...

  4. Statement和PreparedStatement的区别/PreparedStatement和Statement比较的优点

    Statement 和 PreparedStatement之间的关系和区别.     关系:PreparedStatement继承自Statement,都是接口     区别:PreparedStat ...

  5. JDBC中Statement与PreparedStatement的区别

    http://www.blogjava.net/redcoatjk/archive/2012/07/20/383583.html 1. statement每次执行sql语句,相关数据库都要执行sql语 ...

  6. JDBC中的Statement 和PreparedStatement的区别?

    PreparedStatement 继承于 Statement Statement 一般用于执行固定的没有参数的SQL PreparedStatement 一般用于执行有?参数预编译的SQL语句. P ...

  7. java Statement与preparedStatement的区别

    1.数据库执行preparedStatement的时候会预编译,下次再执行此sql语句的时候,数据库端将不会再进行预编译了,而直接去数据库的缓存区,提高访问的效率. 2.在任何时候都不要使用State ...

  8. JDBC中的Statement和PreparedStatement的区别

    PreparedStatement是什么?PreparedStatement是java.sql包下面的一个接口,用来执行SQL语句查询,通过调用connection.preparedStatement ...

  9. JDBC自我复习之Statement和PreparedStatement的区别

    一.Statement 1.1 介绍 Statement 是 Java 执行数据库操作的一个重要接口,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句. Statement对象,用于执 ...

最新文章

  1. Android获取屏幕尺寸大小
  2. Spring学习(一)初识Spring
  3. 京东JDHBase异地多活实践
  4. 第三次学JAVA再学不好就吃翔(part108)--带缓冲的字符流
  5. Linux下java/bin目录下的命令集合
  6. 隐隐约约 听 RazorEngine 在 那里 据说 生成代码 很 美。
  7. Web前端笔记(9) flex布局
  8. Linux与shell编程之一: Linux基础知识总结
  9. vc mscomm串口通信使用了CButtonST按钮类软件分析
  10. python post 表单类数据_python post content-type:multipart/form-data 类型的表单数据
  11. python etree htm参数_使用etree.HTML的编码问题
  12. java漂亮的模板设计代码_JAVA模板方法设计模式——Java设计模式,写漂亮的代码——...
  13. 【C++】常用集合算法
  14. 发送邮件 空格 java_java实现邮件发送功能
  15. 《请君入瓮——APT攻防指南之兵不厌诈》目录—导读
  16. C语言 输出1000以内所有完数
  17. WPS快捷键之 EXCEL高级
  18. [离散数学]集合论基础P_4:运算定律及其证明
  19. 路由器与交换机基本原理
  20. 微信打开网址提示在浏览器中打开的办法

热门文章

  1. Vant rem适配
  2. JPS 命令演示 我们只用 jps -lv
  3. 计算机毕业设计之java+ssm理发店会员管理系统
  4. 如何高速下载国外资源
  5. JSP include指令与动作的 相应时间对比
  6. 重启nginx时nginx -s reload
  7. 人物专访 | 《复仇者联盟》特效工作室的小姐姐告诉你如何建立自己的工作室
  8. 如何提高代理服务器的网速
  9. 我对前端工程化的理解
  10. linux 映射远程文件夹,Linux远程映射磁盘的方法