[JAVA]Statement与PreparedStatement

  1. Statement
  2. PreparedStatement

Statement和PreparedStatement都是用来执行sql语句的,那我们在使用的时候选择谁呢?

Statement

public class JdbcDemo {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try {
            connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8",
                    "root", "1579886070");
            statement = connection.createStatement();
            String sql = "insert into student values(null,"+"'小信'"+","+"18)";
            statement.execute(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        finally {
            if(statement != null){
                try {
                    statement.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if(connection != null){
                try {
                    connection.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

 

PreparedStatement

public class JdbcDemo {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try {
            connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF-8",
                    "root", "1579886070");
            String sql = "insert into student values(null,?,?)";
            preparedStatement = connection.prepareStatement(sql);

            //设置参数值
            preparedStatement.setString(1,"小天");
            preparedStatement.setInt(2,20);
            //执行
            preparedStatement.execute();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        finally {
            if(preparedStatement != null){
                try {
                    preparedStatement.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if(connection != null){
                try {
                    connection.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

 

 

以上分别用Statement和PreparedStatement实现数据库插入数据的案例。

对比明显总结:

  • Statement使用繁琐的字符串拼接,不但不易阅读,当字段比较多时容易出错。可读性与维护性都不好;

  • PreparedStatement使用设置参数的形式,简单易读,不易出错。
    其他优点:

  • PreparedStatement执行效率高于Statement,假设一次要插入10条数据,那么Statement需要执行10次,把10次全部传输到数据库端。

  • PreparedStatement防止Sql注入。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xiaoxin1218@qq.com

文章标题:[JAVA]Statement与PreparedStatement

文章字数:344

本文作者:周信

发布时间:2019-10-16, 18:43:08

最后更新:2023-05-03, 10:25:35

原始链接:http://zx21.xyz/2019/10/16/JAVA-Statement与PreparedStatement/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

可为我打赏鼓励~