看清preparedstatement与statement的一点区别

 

       二者之间的最大差别无疑是由prepared引起的.  http://baike.baidu.com/view/890310.htm 

 

prepared [prɪ'pɛrd] 

[词典释义]

a. 1. 有准备的 2. (食物等)经过调制的

 

源文档 <http://www.baidu.com/baidu?word=prepared&tn=myie2&ch=4>

 

         与此相关程度最大的,便是在执行SQL命令的时候,无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次(这就是预编译的好处体现),而比较于Statement这个普通的对象,每次执行同一个SQL命令都会重新对其进行解析和编译。

 

         这样便带来了有关数据库性能的问题讨论,使用PreparedStatement执行大量SQL命令时效率性能要比Statement对象强上一些。

 

         我们都知道SQL注入问题,也就是说在一些公共的Web站点上,由于网站设计者的疏忽等等,使得恶意用户可以利用一些SQL语句技巧拼接字符串,进而删除用户数据或破坏Web站点正常运行。

 

         PreparedStatement对象的应用中,我们可以使用参数传递具体的数值,规避这种恶意用户通过输入非法字符串而破坏Web系统的情况。同样,这是Statement对象所不具有的一点。

 

String sql ="select * from t_user where name=?"; PreparedStatement pstmt = null; ResultSet rs = null; try{ pstmt = conn.prepareStatement(sql); pstmt.setInt(1, "lfsfxy9"); rs = pstmt.executeQuery(); }finally{ }

 

你可能感兴趣的:(sql,Web,数据库,String,user,文档)