關於jdbc預編譯下模糊查詢的寫法


PreparedStatement預編譯的SQL可以有效的防止SQL注入,但是有些寫法需要值得注意。

Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/ssm","root","root");
            StringBuffer sql =new StringBuffer("select ID,COMMAND,DESCRIPTION,CONTENT from message where 1=1") ;
            ArrayList<String> args = new ArrayList<String>();
            if(command!=null&&!"".equals(command)){
                sql.append(" and COMMAND=?");
                args.add(command);
            }
            if(description!=null&&!"".equals(description)){
                sql.append(" and DESCRIPTION like concat('%',?,'%')");
                args.add(description);
            }
            PreparedStatement ps = conn.prepareStatement(sql.toString());
            for(int i=0;i<args.size();i++){
                ps.setString(i+1, args.get(i));
            }
            
            ResultSet rs = ps.executeQuery();

 

最關鍵的部分在

sql.append(" and DESCRIPTION like concat('%',?,'%')");

使用concat可以有效地拼接字符串


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM