Jason ---分享,共同進(jìn)步

          激情成就夢(mèng)想,努力創(chuàng)造未來(lái)
          隨筆 - 53, 文章 - 1, 評(píng)論 - 45, 引用 - 0
          數(shù)據(jù)加載中……

          PreparedStatement 使用like 模糊查詢

          PreparedStatement 使用like

          在使用PreparedStatement進(jìn)行模糊查詢的時(shí)候廢了一番周折,以前一直都沒(méi)有注意這個(gè)問(wèn)題。一般情況下我們進(jìn)行精確查詢,sql語(yǔ)句類(lèi)似:select * from table where name =?,然后調(diào)用 PreparedStatement的setString等方法給?指定值。那么模糊查詢的時(shí)候應(yīng)該怎么寫(xiě)呢?我首先嘗試了:select * from customer where name like ‘%?%’。
          此時(shí)程序報(bào)錯(cuò),因?yàn)椋勘话诹藛我?hào)中,PreparedStatement并不視它為一個(gè)參數(shù)。后來(lái)上網(wǎng)查了相關(guān)的一些資料,發(fā)現(xiàn)可以這樣寫(xiě)select * from table where name like ?;但是在指定參數(shù)的時(shí)候把?指定為”%”+name+”%”,name是指定的查詢條件。這樣就OK了。
          一般情況下,我總是潛意識(shí)的認(rèn)定了?就是取代所指定的參數(shù),但是實(shí)際上我們可以對(duì)指定的參數(shù)進(jìn)行了一定的包裝之后再傳給?,比如這里我們?cè)趨?shù)的前后都加了一個(gè)%,然后再傳給?   

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

          posted on 2008-03-03 09:35 agun 閱讀(9342) 評(píng)論(12)  編輯  收藏 所屬分類(lèi): java 基礎(chǔ)

          評(píng)論

          # re: PreparedStatement 使用like 模糊查詢  回復(fù)  更多評(píng)論   

          非常非常感謝。
          問(wèn)題解決了
          2008-08-21 14:28 | 唐林峰

          # re: PreparedStatement 使用like 模糊查詢  回復(fù)  更多評(píng)論   

          呵呵,能解決問(wèn)題就好,有什么問(wèn)題大家可以多交流.互相學(xué)習(xí).
          2008-08-22 08:32 | agun

          # re: PreparedStatement 使用like 模糊查詢  回復(fù)  更多評(píng)論   

          受益良多,正為這個(gè)問(wèn)題煩惱呢
          2009-02-05 16:27 | Luna

          # re: PreparedStatement 使用like 模糊查詢  回復(fù)  更多評(píng)論   

          呵呵 ,互相學(xué)習(xí)
          2009-02-05 16:57 | agun

          # re: PreparedStatement 使用like 模糊查詢  回復(fù)  更多評(píng)論   

          學(xué)習(xí)了,謝謝
          2009-02-09 11:44 | 123

          # re: PreparedStatement 使用like 模糊查詢  回復(fù)  更多評(píng)論   

          總是不注意小的細(xì)節(jié)問(wèn)題

          # re: PreparedStatement 使用like 模糊查詢  回復(fù)  更多評(píng)論   

          真是太犀利了,有時(shí)候我們的思維就陷在一個(gè)死角里,要有人點(diǎn)撥一下,才能鉆出來(lái)。 受益匪淺啊.
          2010-05-11 19:18 | 王智群

          # re: PreparedStatement 使用like 模糊查詢[未登錄](méi)  回復(fù)  更多評(píng)論   

          根本就解決不了問(wèn)題
          我試過(guò)好幾種方法 都不可以
          2011-12-19 23:25 | Lee

          # re: PreparedStatement 使用like 模糊查詢[未登錄](méi)  回復(fù)  更多評(píng)論   

          怎么不可以了,是可以?
          2011-12-22 08:48 | agun

          # re: PreparedStatement 使用like 模糊查詢  回復(fù)  更多評(píng)論   

          學(xué)習(xí)了~~ 受益匪淺
          2012-01-11 20:50 | 11

          # re: PreparedStatement 使用like 模糊查詢  回復(fù)  更多評(píng)論   

          謝謝。。。。
          2012-07-06 20:29 | 嚴(yán)寧云

          # re: PreparedStatement 使用like 模糊查詢[未登錄](méi)  回復(fù)  更多評(píng)論   

          為什么我的不能解決問(wèn)題啊,查詢失敗。。
          2014-03-18 18:16 | 新手
          主站蜘蛛池模板: 交城县| 天长市| 华安县| 科技| 定州市| 玛纳斯县| 平乐县| 彰化县| 齐齐哈尔市| 门头沟区| 江源县| 唐河县| 临海市| 渭源县| 都兰县| 宁明县| 涪陵区| 洱源县| 海南省| 北票市| 房山区| 井研县| 兴国县| 中卫市| 平武县| 林西县| 安多县| 开化县| 水富县| 寻乌县| 古蔺县| 阳原县| 安庆市| 黎平县| 伊宁县| 禄劝| 武夷山市| 西平县| 永州市| 邓州市| 东方市|