PreparedStatement与Statement的区别

JDBC中执行sql对表的查询有三种方式,静态SQL语句(Statement),动态SQL语句(PreparedStatement),与存储过程(CallableStatement)三种方式,

在这里着重说一下PreparedStatement与Statement的区别

java.sql包中的PreparedStatement 接口继承了Statement,并与之在两方面有所不同:有人主张,在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement。

public interface PreparedStatement extends Statement;可以看到PreparedStatement是Statement的子接口,我们在执行查询或者更新数据表数据的时候,拼写SQL语句是一个很费力并且容易出错的事情,PreparedStatement可以简化这样的一个过程.

使用Statement需要进行拼写SQl语句,辛苦并且容易出错,之前使用Statement的SQL语句的形式是这样的

1  String sql = "insert into student values"+"("+ student.getId() + ",

2  " + student.getName() + "," +student.getSex() + ")";

使用PreparedStatement:是Statement的子接口,可以传入带占位符的SQL语句,提供了补充占位符变量的方法

1  PreparedStatement perstmt=conn.preparedStatement(sql);

可以看到将sql作为参数传入了,就不需要我们在费力拼写了。

2)变成了这样的形式

2  String sql="insert into examstudent values(?,?,?)";

在执行带参数的SQL语句之前,必须对“?”赋值,这时可以调用PreparedStatement的setXxx(int index,Object val)设置占位符的值,其中index的值从1开始

1  perstmt.setString(1,student.getId());

2  perstmt.setString(2,student.getName());

3  perstmt.setString(3,student.getSex());

4  perstmt.executeUpdate();

PreparedStatement的特点

      PreparedStatemant,是处理预编译语句的一个接口,PreparedStatemant可用于执行动态的SQL语句,所谓动态SQL语句,就是可以在SQL语句中提供参数,这是我们可以对相同的SQL语句替换参数从而多次使用。因此当一个SQL语句需要执行多次时,使用预编译语句可以减少执行时间。

你可能感兴趣的:(PreparedStatement与Statement的区别)