美文网首页周文佳语强化班
PreparedStatement与Statement的区别

PreparedStatement与Statement的区别

作者: 焦前进_三月 | 来源:发表于2019-01-27 08:12 被阅读31次

    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的区别

        本文链接:https://www.haomeiwen.com/subject/zfcgjqtx.html