yxhxj2006

          常用鏈接

          統計

          最新評論

          PreparedStatement 使用like 模糊查詢

          PreparedStatement 使用like

          在使用PreparedStatement進行模糊查詢的時候廢了一番周折,以前一直都沒有注意這個問題。一般情況下我們進行精確查詢,sql語句類似:select * from table where name =?,然后調用 PreparedStatement的setString等方法給?指定值。那么模糊查詢的時候應該怎么寫呢?我首先嘗試了:select * from customer where name like ‘%?%’。
          此時程序報錯,因為?被包含在了單引號中,PreparedStatement并不視它為一個參數。后來上網查了相關的一些資料,發現可以這樣寫select * from table where name like ?;但是在指定參數的時候把?指定為”%”+name+”%”,name是指定的查詢條件。這樣就OK了。
          一般情況下,我總是潛意識的認定了?就是取代所指定的參數,但是實際上我們可以對指定的參數進行了一定的包裝之后再傳給?,比如這里我們在參數的前后都加了一個%,然后再傳給?   

          String expr = "select * from  table where url like ?";
             pstmt = con.prepareStatement(expr);
             String a="a";
             pstmt.setString(1, "%"+a+"%");//自動添加單引號 (包裝后的參數)
            pstmt.execute();
             System.out.println(pstmt.toString());//打印sql
             //會默認生成sql: select * from  table where url like '%http%' 

          posted on 2013-10-08 10:33 奮斗成就男人 閱讀(225) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 广昌县| 资源县| 上杭县| 会东县| 泸州市| 新绛县| 双柏县| 望都县| 喀喇沁旗| 孝感市| 宁南县| 萨嘎县| 安国市| 敦化市| 镇平县| 台山市| 汕尾市| 泰和县| 新昌县| 中宁县| 宜城市| 建湖县| 孙吴县| 米林县| 哈尔滨市| 乐亭县| 濮阳县| 卢湾区| 洪湖市| 沭阳县| 康定县| 石狮市| 蒲城县| 集贤县| 苍山县| 锦屏县| 洪雅县| 天峨县| 太原市| 嘉义县| 肃宁县|