我感觉Statement与PreparedStatement比没有任何优势?哪还要使用Statement吗?
请问 Statement 在什么情况下适用?

解决方案 »

  1.   

    PreparedStatement:
    一条SQL 语句是预编译的且存放在 PreparedStatement 对象中。该对象可用于有效地多次执行该语句。 
    Statement:
    Statement 对象用于执行一条静态的 SQL 语句并获取它产生的结果。
      

  2.   


    能不能举例说明?我把所有的sql语句都用PreparedStatement预编译执行有什么不好?还想知道,“语句是预编译的且存放在 PreparedStatement 对象中”,是不是说我再创建一个PreparedStatement 的时候 以前的编译就没用了?Statement是把sql语句交给数据库去编译的?学习..
      

  3.   

    public interface PreparedStatement extends Statement呵呵,看看这个定义,你就知道Statement为什么有用了
      

  4.   

    我的意思是 Statement 相对于 PreparedStatement
    是不是没有任何优势可言,完全可以弃之不用??????
      

  5.   

    其中还存在一个性能问题 
    印象中,可能不正确:
    在参数比较少的情况下,Statement的性能好
    但是达到某种界限时 情况就反过来
      

  6.   

    在绝大部分情况下,Statement完全没用的.只用PreparedStatement就可以了.
    1.自动防止sql注入攻击.
    2.PreparedStatement会将sql预编译,并保存起来.现在的连接池一般都会提供StatementPool的,Resin的连接池有一个preparedstatement_size的选项,指定缓冲Statement的数量;C3p0使用maxStatements 
    和maxStatementsPerConnection参数控制其StatementPool ),
    3.PreparedStatemnt的exeuteUpdateBatch()可极大的提高新增,删除的效率.
      

  7.   

    sql 编译后放在哪?PreparedStatement中,还是数据库中
      

  8.   

    sql 编译后放在哪?PreparedStatement中,还是数据库中
      

  9.   

    String sql作为PerparedStatement构造时的参数
      

  10.   

    PerparedStatement通常用在批量插入记录等类似需要重复执行sql语句的情况。
    相对只执行一条语句的话,它肯定是没statement快的了。jdbc doc里还是说的比较详细的。