当Statemetn,PreparedStaement都能实现时,用哪个?
你一般用哪个?

解决方案 »

  1.   

    我找的:
    3、在动态SQL或有时间限制的命令中使用Statement对象在执行SQL命令时,我们有二种选择:可以使用 PreparedStatement对象,也可以使用Statement对象。无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次。当使用Statement对象时,每次执行一个SQL命令时,都会对它进行解析和编译。这可能会使你认为,使用 PreparedStatement对象比使用Statement对象的速度更快。然而,我进行的测试表明,在客户端软件中,情况并非如此。因此,在有时间限制的SQL操作中,除非成批地处理SQL命令,我们应当考虑使用Statement对象。此外,使用Statement对象也使得编写动态SQL命令更加简单,因为我们可以将字符串连接在一起,建立一个有效的SQL命令。因此,我认为,Statement对象可以使动态SQL命令的创建和执行变得更加简单。 
    5、利用PreparedStatement对象提高数据库的总体效率在使用PreparedStatement对象执行SQL命令时,命令被数据库进行解析和编译,然后被放到命令缓冲区。然后,每当执行同一个PreparedStatement对象时,它就会被再解析一次,但不会被再次编译。在缓冲区中可以发现预编译的命令,并且可以重新使用。在有大量用户的企业级应用软件中,经常会重复执行相同的SQL命令,使用 PreparedStatement对象带来的编译次数的减少能够提高数据库的总体性能。如果不是在客户端创建、预备、执行 PreparedStatement任务需要的时间长于Statement任务,我会建议在除动态SQL命令之外的所有情况下使用 PreparedStatement对象。
      

  2.   

    “有时间限制的SQL操作”是怎样的一种情况?
    “然而,我进行的测试表明,在客户端软件中,情况并非如此。”那服务器端软件呢?
      

  3.   

    6、在成批处理重复的插入或更新操作中使用PreparedStatement对象如果成批地处理插入和更新操作,就能够显著地减少它们所需要的时间。Oracle提供的Statement和 CallableStatement并不真正地支持批处理,只有PreparedStatement对象才真正地支持批处理。我们可以使用 addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的 setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制,可以以如下所示的方式调用setExecuteBatch():PreparedStatement pstmt3D null;
      try {
      ((OraclePreparedStatement)
      pstmt).setExecuteBatch(30);
      ...
      pstmt.executeUpdate();
      }调用setExecuteBatch()时指定的值是一个上限,当达到该值时,就会自动地引发SQL命令执行,标准的executeUpdate()方法就会被作为批处理送到数据库中。我们可以通过调用PreparedStatement类的sendBatch()方法随时传输批处理任务。
    //OraclePreparedStatement这个类是什么类?API里好象找不到
      

  4.   

    我有个老师他说其实第二个在实际工作中没有第一个好
    并不是像api上面说的那样,可以在重复使用中得到充分的利用
      

  5.   

    PreparedStatement 本身就是 Statement 的子类,Statement 能实现的 PreparedStatement 也能实现,但是从效率、安全性、代码可读性来看,我选 PreparedStatement,说实话,我从来没有用过 Statement,都是使用 PreparedStatement 的,哪怕是一个没有参数的语句。
      

  6.   

    毫无疑问用第二个,也就是PreparedStaement。
    因为,在实际的使用当中,就单独一次的想数据库访问,两者的速度差别不是很明显。
    而在多次,同结构的SQL语句来访问数据库的时候,PreparedStaement的效率会明显提升。
    就以上两点原因,一致选用PreparedStaement。
      

  7.   

    用PreparedStatement,不需要考虑特殊字符的转换,比较方便。
      

  8.   

    JDBC编程我们一般用PreparedStatement
    安全性
    方便
    公司也几乎是终于定的