• PreparedStatement


    一、or ture or安全问题-------------利用PreparedStatement接口解决
            解决办法:使用Statement的子接口PreparedStatement来解决。
            即:
                PreperedStatement的参数使用占位符替代,
                能通过setXxxx()方法为占位符赋值,
                在赋值的过程中动态检测,预防SQL注入问题的发生。
            code:
                String sql = "select * from user where name = ?";
                pstmt = conn.prepareStatement(sql);
                pstmt.setString(1,name);
                pstmt.excuteQuery();
                
                
    二、PerparedStatement解析
            PreperedStatement是Statement的孩子,它的实例对象可以通过调用Connection.preparedStatement()方法获得。
            获取--通过Connection类:
                 创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库。
                     PreparedStatement prepareStatement(String sql) ;
          code:
              PreparedStatement pstmt = conn.preparedStatement(sql);   
                
            常用方法:
                1》设置占位符?的值
                    void setDouble(int parameterIndex, double x)
                     void setFloat(int parameterIndex, float x)
                     void setInt(int parameterIndex, int x)
                void setString(int parameterIndex,String x);
                void setDate(int parameterIndex,Date x);
                
                paramterIndex:需要替换的占位符下标,从1开始
                x:需要替换成的值

                2》在此 PreparedStatement 对象中执行 SQL 查询
                     ResultSet executeQuery();
                     Blean execute();
                     int executeUpdate();
             
            
            优点:相对于Statement对象而言:
                1》PreperedStatement可以避免SQL注入的问题。
                2》Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。
                     PreparedStatement 可对SQL进行预编译,从而提高数据库的执行效率。
                3》并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,简化sql语句的编写。

                    
            总结:PerparedStatement的特点
                1》解决SQL注入问题,在绑定参数时,动态检测
                2》使用?占位符替代真实的绑定值
                3》在发送相同结构的SQL时,较Statement效率有所提升
                故:
                    项目中优先使用:PreparedStatement!!!



    三、Statement和PreparedStatement的特点
        1》对于创建和删除表或数据库,我们可以使用executeUpdate(),该方法返回0,表示未影向表中任何记录
        2》对于创建和删除表或数据库,我们还可以使用execute(),该方法返回false,表示创建和删除数据库表成功
        总结:
            int executeUpdate()函数:根据表中被影响的行数作为返回值。
            boolean excute()函数:除了select操作外返回true之外,其它的操作都返回flase;
       

  • 相关阅读:
    (转)Spring Boot(十八):使用 Spring Boot 集成 FastDFS
    (转)Spring Boot(十七):使用 Spring Boot 上传文件
    (转)Spring Boot(十六):使用 Jenkins 部署 Spring Boot
    (转)Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例
    (转)Spring Boot (十四): Spring Boot 整合 Shiro-登录认证和权限管理
    (转)Spring Boot (十三): Spring Boot 小技巧
    (转)Spring Boot(十二):Spring Boot 如何测试打包部署
    (转)Spring Boot(十一):Spring Boot 中 MongoDB 的使用
    第一节 MongoDB介绍及下载与安装
    RDLC报表总结
  • 原文地址:https://www.cnblogs.com/SkyGood/p/4005478.html
Copyright © 2020-2023  润新知