statement与preparedstatement的区别?及作用?

解决方案 »

  1.   

    1: 
    我们先从这两个单词进行初步的讲解,Prepared(准备好的, 精制的),从这里可以知道PreparedStatement是预先编译的语句,而Statement则不是预先编译的,在DBMS中处理管理中Statement是要进行语法、语义的,而PreparedStatement则不要。 2: 
    PrepareStatement中执行的SQL语句中是可以带参数的,而Statement则不可以。 
    比如: 
    PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES 
    SET SALARY = ? WHERE ID = ?"); 
    pstmt.setBigDecimal(1, 153833.00); 
    pstmt.setInt(2, 110592); 
    pstmt. executeUpdate(); 3: 
    当处理批量SQL语句时,这个时候就可以体现PrepareStatement的优势,由于采用Cache机制,则预先编译的语句,就会放在Cache中,下次执行相同SQL语句时,则可以直接从Cache中取出来。  关于PreparedStatement 预编译的语句具体是放在哪儿?为什么能提升性能?先看看oracle的sql执行细节:oracle 执行sql时,首先要分析sql生成查询计划,具体有:分析sql的合法性(到数据库schema中查询),决定使用某个的哪段索引(好像是这样说的)... ...,然后在第一次查询时,用物理读,其后相同的查询计划都是逻辑读,是到缓存里面读。 
    PreparedStatement是不是有利于oracle生成查询计划,或许还有别的帮助,所以提高了性能。 
    但有一点是肯定的,PreparedStatement一定需要driver具体实现才行,Prepared是缓存在数据库端的。所以说,PreparedStatement预编译的sql语句是放在数据库端的缓存里面,而放到缓存,有利于sql生成查询计划。
      

  2.   

    preparedstatement继承了statement,有防止生气了、注入的功效、
    批处理的时候preparedstatement比statement快些、
      

  3.   

    preparedstatement是预编译的它这样可以减少对后台服务器的压力
      

  4.   


    我只知道 用PreparedStatement可以执行类似这样的insert into usertb values(?,?,?)
    中间的?可以动态的传值。
      

  5.   

    个人感觉preparedstatement好用些,而且更灵活些,建议用前者,至于区别上1楼说的很清楚,尤其第二条是语法上的
      

  6.   

    preparedstatement继承了statement,有防止注入
    批处理的时候preparedstatement比statement快些