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/

相关文章推荐

PreparedStatement 与 Statement 的区别

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

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

点击打开链接 Statement和PreparedStatement之间的区别 1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程 ...

jdbc中 PreparedStatement 和Statement的区别

1 、 PreparedStatement 接口继承 Statement , PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象。 2...

JDBC中的Statement和PreparedStatement的区别

JDBC中的Statement和PreparedStatement的区别

Statement 和 PreparedStatement之间的关系和区别

关系:PreparedStatement继承自Statement,都是接口 区别:PreparedStatement可以使用占位符,是预编译的,批处理比Statement效率高表示预编译的 SQL 语...
  • suwu150
  • suwu150
  • 2016年10月06日 20:02
  • 2172

JDBC中Statement与PreparedStatement的区别

1. statement每次执行sql语句,相关数据库都要执行sql语句的编译;preparedstatement是预编译的, 采用Cache机制(预编译语句,放在Cache中,下次执行相同SQL语句...

JDBC的Statement和PreparedStatement区别

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

PreparedStatement和Statement具体区别

1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程 2.使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement ...
  • wl_ldy
  • wl_ldy
  • 2012年02月02日 15:42
  • 816

JDBC之Statement,PreparedStatement,CallableStatement的区别

Statement 每次执行sql语句,数据库都要执行sql语句的编译 ,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement.PreparedStatement是预编译...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PreparedStatement与Statement区别
举报原因:
原因补充:

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