Statement和PreparedStatement的区别(1)
Statemen和PreparedStatement都可以用于把sql语句从java程序中发送到指定
数据库,并执行sql语句,但是他们也存在区别:
1、直接使用Statement,驱动程序一般不会对sql语句作处理而直接交给数据库;
使用PreparedStamen,形成预编译的过程,并且会对语句作字符集的转换(至少
在sql server)中如此。
如此,有两个好处:对于多次重复执行的语句,使用PreparedStament效率会更高
一点,并且在这种情况下也比较适合使用batch;另外,可以比较好地解决系统的
本地化问题 。
2、PreparedStatement还能有效的防止危险字符的注入,也就是sql注入的问题。
PreparedStatement不仅
包含了SQL语句,而且大多数情况下这个语句已被预编译过,当其执行时,只需DB
MS运行SQL语句,而不必先编译。当你需要执行Statement对象多次的时候,Prepa
redStatement对象将会降低运行时间,加快了访问数据库的速度。
好处是,不必重复SQL语句的句法,而只需要改其中变量的值,便可重新执行SQL
语句。选择PreparedStatement对象与否,在于相同句法的SQL语句是否执行了多
次,而且两次之间的差别仅是变量的不同。如仅执行一次的话,它和普通的对象
无差异,体现不出预编译的优越性。