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)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 鄄城县| 安陆市| 张北县| 蛟河市| 顺平县| 潼南县| 绥中县| 那曲县| 稷山县| 秭归县| 嘉鱼县| 浑源县| 昆山市| 讷河市| 崇仁县| 朝阳市| 沂源县| 临汾市| 五河县| 张家川| 顺义区| 耿马| 遂溪县| 望江县| 淮南市| 襄垣县| 楚雄市| 闵行区| 九龙坡区| 常山县| 乐山市| 娱乐| 武平县| 赤水市| 宣化县| 九江县| 分宜县| 安阳市| 越西县| 玛多县| 西盟|