PreparedStatement与Statement区别

转载 2015年07月09日 16:34:40

一、PreparedStatement的预编译机制,使其与Statement有着显著的区别

 

       (1)PrepareStatement语句,在经过编译器编译后,被缓存下来,下次调用相同的预编译语句时,就不需要再次编译,只要将参数直接传入编译过的语句执行代码中就能够执行。这并是说只有一个Connection中多次执行的预编译语句被缓存,而是对于整个DB中,只要预编译的语句语法和缓存中匹配,那么在任何时候都可以不需要再次编译而直接执行。

 

       (2)PreparedStatement提高了安全性

 

        Statement语句不安全的 简单示例:String sql = "select * from tb wherename='"+appName+'"";利用appName参数值的输入,来生成恶意的sql语句,如:将[' or '1'='1']传入进来,就将句子的原意完全转变。

 

         PreparedStatement的预编译机制使你传入的任何内容不会和原来的语句发生任何匹配的关系,这样,你可以对传入数据的过滤省心许多。

 

 

 

二、PreparedStatement可以比较好地解决系统的本地化问题。

 

      譬如,在一个原始的英语系统上装好了sqlserver,那么它缺省的字符集是ANSI的Latin字符集;现在我们要将此系统作中文系统用,装好各种语言包,设置好location等等,我们期望用java写的application能够正常显示中文;但是,如果我们使用Statement往sqlserver里面插入中文得到将是编码丢失的问号等;这是因为更改设置以后,我们的字符集是gb2312,而sqlserver字符集没有变,中文串插入数据库中导致什么呢? latin字符集显然只有gb2312的一部分字符,如此导致编码丢失,无法正常显示。

 

 

 

三、谈谈PreparedStatement的缺点

 

   在执行SQL语句出错的时候,我们没有办法看到完整的SQL语句,甚至看不到设置的参数,这样,对调试带来的不便性。


转载处:http://blog.163.com/xiaokangzhijia@126/blog/static/1659548562010927222912/

Connection、PreparedStatement、Statement、ResultSet是JDBC编程常用的接口,请分别简述它们的作用?

JDBC定义: JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语...
  • dingxingmei
  • dingxingmei
  • 2014年09月14日 16:09
  • 2182

mybatis学习日记(一)1-预编译PreparedStatement以及jdbc缺点

预编译的优点 PreparedStatement是预编译的,对于批量处理可以大大提高效率,也叫JDBC存储过程。 使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statemen...
  • jqq_apple
  • jqq_apple
  • 2015年12月28日 20:00
  • 3034

mybatis配置文件中的${}和#{}有什么区别?

转自:http://zhidao.baidu.com/link?url=wFu4dsnKG-n2zx7ehfzHTrnGexmizJsXMvX39PmjN6KktYFtPAfcmXs89lR0k85S...
  • suyu_yuan
  • suyu_yuan
  • 2016年06月15日 10:51
  • 7617

java中PreparedStatement和Statement的区别

  • 2010年12月26日 17:03
  • 17KB
  • 下载

java操作数据库---Statement对象和preparedStatement对象的区别(二)

在java操作数据库的程序中,通过Statement对象和preparedStatement对象都可以去调用execute()等操作数据库的操作,那么这两个对象有什么区别呢? (一)两者的关...
  • yi_ya
  • yi_ya
  • 2014年12月30日 17:31
  • 400

【转载】Statement和PreparedStatement之间的区别

点击打开链接 Statement和PreparedStatement之间的区别 1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程 ...
  • FightingBoyws
  • FightingBoyws
  • 2017年03月25日 19:57
  • 118

JDBC的Statement和PreparedStatement区别

1.每一种数据库都会尽最大努力对预编译语句提供最大的性能优化.因为预编译语句有可能被重复调用.所以语句在被DB的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要...
  • chen_fly2011
  • chen_fly2011
  • 2017年02月14日 13:55
  • 85

PreparedStatement 与 Statement 的区别

为什么 PreparedStatement 很重要, 以及怎样"正确"使用他们.       数据库有一个艰苦的工作. 它们不断地从许多客户端读取 SQL 查询, 对数据进行尽可能高效的 查询...
  • sunchunmei555
  • sunchunmei555
  • 2011年10月31日 10:18
  • 411

jdbc中 PreparedStatement 和Statement的区别

1 、 PreparedStatement 接口继承 Statement , PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象。 2...
  • babylorin
  • babylorin
  • 2016年10月13日 10:33
  • 170

JDBC中的Statement和PreparedStatement的区别

JDBC中的Statement和PreparedStatement的区别
  • zhangming1013
  • zhangming1013
  • 2015年01月23日 17:25
  • 354
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PreparedStatement与Statement区别
举报原因:
原因补充:

(最多只允许输入30个字)