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语句需要执行多次时,使用预编译语句可以减少执行时间。
网友评论