zoukankan      html  css  js  c++  java
  • 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;
       

  • 相关阅读:
    CentOS查看CPU信息、位数、多核信息
    Linux常用命令大全
    chmod命令详细用法
    tar命令的详细解释
    yum和rpm命令详解
    LeetCode 241. Different Ways to Add Parentheses
    LeetCode 139. Word Break
    LeetCode 201. Bitwise AND of Numbers Range
    LeetCode 486. Predict the Winner
    LeetCode 17. Letter Combinations of a Phone Number
  • 原文地址:https://www.cnblogs.com/SkyGood/p/4005478.html
Copyright © 2011-2022 走看看