请高手帮我举例说明下!谢谢!!

解决方案 »

  1.   

    PreparedStatement 实例包含已编译的 SQL 语句。这就是使语句“准备好”。
     由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。因此,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。
      

  2.   

    好处:
    1 预编译——但不是所有的数据库都是这样,比如MySQL的那个就是加的
    2 设置参数,避免最傻的注入漏洞
    3 批量操作没有特殊情况,一般都直接用PreparedStatement,哪怕是单条没有参数的SELECT
      

  3.   

    那么Statement 是不是就一无是处了?
      

  4.   


    是的PreparedStatement 是 Statement 的子类,Statement 拥有的功能,PreparedStatement 都拥有,而且还拥有其他更多的功能,因此不建议使用 Statement
      

  5.   


    除了作为PreparedStatement的父类,基本上,它对我就是一无是处。
      

  6.   

    另外个人认为,PreparedStatement的参数也是重要的一个原因,利用不同的常量可做到RESULTSET(个人理解实际上就像一个指针)的自由调动,以实现许多功能,例如:分页什么的。
      

  7.   

    基本上都会用预编译,现在还没有见过什么项目使用Statement,所以以后都使用预编译就对了.
      

  8.   


    我感觉也没有用处。有时候可能会在写个 close 方法时用 Statement 参数,毕竟这个是 PreparedStatement, CallableStatement 的父类,写一个 close 方法可以供给三种对象调用,嘿嘿~~~public static void close(Statement stmt) {
        if(stmt != null) {
            try {
                stmt.close();
            } ...
            ...
        }
    }
      

  9.   

    连这个我也图省事,用了commons-dbutils
        /**
         * Close a <code>Connection</code>, <code>Statement</code> and 
         * <code>ResultSet</code>.  Avoid closing if null and hide any 
         * SQLExceptions that occur.
         *
         * @param conn Connection to close.
         * @param stmt Statement to close.
         * @param rs ResultSet to close.
         */
        public static void closeQuietly(Connection conn, Statement stmt,
                ResultSet rs) {        try {
                closeQuietly(rs);
            } finally {
                try {
                    closeQuietly(stmt);
                } finally {
                    closeQuietly(conn);
                }
            }    }
      

  10.   

    楼上的都说的差不多了,我再补充一句啊!执行增、删、改的时候尽量用PreparedStatement,而查询的时候可以用Statement,也可以用PreparedStatement。
      

  11.   


    String sql = "select * from TBL_REPLY t left join tbl_user  u on t.uId = u.uId where topicid = ?";
    pstmt = con.prepareStatement(sql);
    pstmt.setInt(1, topicid);
    //prepareStatement可以预编译SQL语句
      

  12.   

    语句格式已知并确定,参数未知
    通过此对象能实现预编译 提高执行效率
    另外还能防止SQL注入