Statement和PreparedStatement的区别!!!

时间:2021-01-29 11:52:23

Statement 和 PreparedStatement之间的关系和区别.

1.  Statement只能处理静态SQL;

2.  PreparedStatement既能处理静态sql也能处理动态sql,它继承了Statement的特点

 

站在预处理角度:

         PreparedStatement适合做连续多次结构相同的sql语句,有优势.

         Statement适合做连续多次不同结构的sql语句,有优势.

项目中,我们都用子接口的原因

         1、支持动态sql,也支持静态sql

         2、预处理

         3、静态sql也可以用PreparedStatement

 

适合:

         静态sql—优先Statement;

         动态sql—优先PreparedStatement

         强烈推荐使用PreparedStatement

 


    关系:PreparedStatement继承自Statement,都是接口
    区别:PreparedStatement可以使用占位符,是预编译的,批处理比Statement效率高   
详解:
1、PreparedStatement:表示预编译的 SQL 语句的对象。
   接口:public interface PreparedStatement extends Statement之间的继承关系
   SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。
   注:用于设置 IN 参数值的设置方法(setShort、setString 等等)必须指定与输入参数的已定义 SQL 类型兼容的类型。例如,如果 IN 参数具有 SQL 类型 INTEGER,那么应该使用 setInt 方法,问号的位置也是应该注意的,因为第一个问好的位置为1,第二个问号的位置为2.以此类推。
   如果需要任意参数类型转换,使用 setObject 方法时应该将目标 SQL 类型作为其参数。
   在以下设置参数的示例中,con 表示一个活动连接:
              PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SALARY = ? WHERE ID = ?");
              pstmt.setBigDecimal(1, 1533.00)
              pstmt.setInt(2, 1102)
              pstmt.execute()//注意提交时这里不能再有sql语句,不同于Statment