zoukankan      html  css  js  c++  java
  • Statement和PreparedStatement

    Statement与PreparedStatement的关系和区别:

    关系:PreparedStatement继承自Statement,都是接口。

    区别:PreparedStatement可以使用占位符,是预编译的,批处理比Statement效率高   。

       创建Statement是不需要传参的,而创建PreparedStatement是需要传入sql语句作为参数的。(原因:因为PreparedStatement是预编译的,所以在创建PreparedStatement的时候,将sql语句传入PreparedStatement的构造方法,而这个带有参数的构造方法内部,就是处理预编译的代码,作为预编译。而Statement是没有预编译的,只能在执行的时候,具体传入sql语句。)


    在JDBC应用中,如果你已经是一个稍有水平的开发者,就应该学会熟练使用以PreparedStatement代替Statement,也就是说,在任何时候都尽量滴不要去使用Statement。

    PreparedStatement 接口继承 Statement,PreparedStatement 实例包含已编译的 SQL 语句, 所以其执行速度要快于 Statement 对象。

     Statement为一条Sql语句生成执行计划, 如果要执行两条sql语句 

    select colume from table where colume=1;select colume from table where colume=2; 

    会生成两个执行计划 一千个查询就生成一千个执行计划! 

    PreparedStatement用于使用绑定变量重用执行计划 select colume from table where colume=:x; 

    通过set不同数据只需要生成一次执行计划,可以重用。

    PreparedStatement的使用:

    1 String sql = "select distinct loan_type from loan where bank=?";
    2 PreparedStatement preStatement = conn.prepareStatement(sql);
    3 preStatement.setString(1, "Citibank");
    4 ResultSet result = preStatement.executeQuery();

    Statement的使用:

    1 String sql = "select * from users where username='" + username + "' AND " + "password='" + password + "'";
    2 statement = connection.createStatement();
    3 resultSet = statement.executeQuery(sql);

    使用PreparedStatement的好处:

    1.提高可读性和可维护行

    2.最大程度的提高性能。PreparedStatement的第一次执行消耗是很高的,它的性能体现在后面的重复执行(缓存的作用),例如假设对表中的某一个或某几条数据进行针对查询,JDBC驱动会发送一个网络请求到数据解析和优化这个查询,而执行时会产生另一个网络请求。

    3.防止SQL注入(PS:SQL注入产生的原因很简单,就是访问的用户通过前端对网站可以输入参数的地方进行提交参数,参数里注入了一些恶意参数传入到服务器后端中,服务器后端没有对其进行详细的安全过滤,导致传入的参数直接传到数据库中,执行了数据库的SQL语句,SQL语句是可以查询网站的管理员账号、密码、以及一些其他信息等等的敏感数据,这就是SQL的注入式攻击。

    好久没贴图了,给大伙来一个

  • 相关阅读:
    关于Scala中正则表达式的几种用法
    关于Scala中的match case方法的使用
    scala——Array函数大全
    线程并发的两种方式
    org.apache.hadoop.security.AccessControlException: Permission denied: user=anonymous, access=EXECUTE——beeline 连接 hive 默认权限 anonymous用户权限不够
    hive函数大全
    hive的配置和HQL的查询优化
    Java-Web学习笔记-Java基础-反射
    BUAA OS Lab4 系统调用与fork
    设计模式(三)——结构型模式,如何搭建健壮且更好维护的系统
  • 原文地址:https://www.cnblogs.com/wudidamowang666/p/11358318.html
Copyright © 2011-2022 走看看