Android中的SQL查詢語(yǔ)句LIKE綁定參數(shù)問題解決辦法(sqlite數(shù)據(jù)庫(kù))
由于考慮到數(shù)據(jù)庫(kù)的安全性,不被輕易SQL注入,執(zhí)行查詢語(yǔ)句時(shí),一般不使用直接拼接的語(yǔ)句,而是使用參數(shù)傳遞的方法。然后在使用參數(shù)傳遞的方法中時(shí),發(fā)現(xiàn)當(dāng)使用like方式查詢數(shù)據(jù)時(shí),很容易出現(xiàn)一個(gè)問題。
錯(cuò)誤案例:
String sql = "select * from mytable where name like '?%'";
Cursor cursor = db.rawQuery(sql, new String[]{myname};
運(yùn)行提示如下錯(cuò)誤:
根據(jù)錯(cuò)誤提示可知,sql語(yǔ)句中的?號(hào)沒有被識(shí)別出來,從而new String[]{myname}沒法替代sql中的?號(hào)。?號(hào)沒有被識(shí)別出來的原因估計(jì)是?號(hào)外有單引號(hào),但是在sql中l(wèi)ike語(yǔ)句的值和%號(hào)需要用引號(hào)圍著。
為了解決sql中?號(hào)無法識(shí)別,必須去掉?號(hào)外的引號(hào),那么%號(hào)也需要去掉。所以,得在后面代替?號(hào)的參數(shù)中添加上%號(hào)。
所以,正確的案例如下:
String myname = "abc";
String sql = "select * from mytable where name like ?";
Cursor cursor = db.rawQuery(sql, new String[]{myname+"%"};
可能有人會(huì)問為什么不用添加引號(hào),因?yàn)閰?shù)代替?號(hào)時(shí),自動(dòng)以字符串的形式代替的。
相關(guān)文章
Android Studio升級(jí)到3.0 Terminal 中文顯示異常解決
本篇文章主要介紹了Android Studio升級(jí)到3.0 Terminal 中文顯示異常解決,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-10-10
21天學(xué)習(xí)android開發(fā)教程之MediaPlayer
21天學(xué)習(xí)android開發(fā)教程之MediaPlayer,MediaPlayer可以播放音頻和視頻,操作相對(duì)簡(jiǎn)單,感興趣的小伙伴們可以參考一下2016-02-02
Android利用ViewDragHelper輕松實(shí)現(xiàn)拼圖游戲的示例
本篇文章主要介紹了Android利用ViewDragHelper輕松實(shí)現(xiàn)拼圖游戲的示例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-11-11
Android實(shí)現(xiàn)淘寶購(gòu)物車
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)淘寶購(gòu)物車,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
Android用RecyclerView實(shí)現(xiàn)圖標(biāo)拖拽排序以及增刪管理
這篇文章主要介紹了Android用RecyclerView實(shí)現(xiàn)圖標(biāo)拖拽排序以及增刪管理的方法,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下2021-03-03
Android實(shí)現(xiàn)聲音采集回聲與回聲消除
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)聲音采集回聲與回聲消除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08

