Android中的SQL查詢語句LIKE綁定參數(shù)問題解決辦法(sqlite數(shù)據(jù)庫)
由于考慮到數(shù)據(jù)庫的安全性,不被輕易SQL注入,執(zhí)行查詢語句時,一般不使用直接拼接的語句,而是使用參數(shù)傳遞的方法。然后在使用參數(shù)傳遞的方法中時,發(fā)現(xiàn)當使用like方式查詢數(shù)據(jù)時,很容易出現(xiàn)一個問題。
錯誤案例:
String sql = "select * from mytable where name like '?%'";
Cursor cursor = db.rawQuery(sql, new String[]{myname};
運行提示如下錯誤:
根據(jù)錯誤提示可知,sql語句中的?號沒有被識別出來,從而new String[]{myname}沒法替代sql中的?號。?號沒有被識別出來的原因估計是?號外有單引號,但是在sql中l(wèi)ike語句的值和%號需要用引號圍著。
為了解決sql中?號無法識別,必須去掉?號外的引號,那么%號也需要去掉。所以,得在后面代替?號的參數(shù)中添加上%號。
所以,正確的案例如下:
String myname = "abc";
String sql = "select * from mytable where name like ?";
Cursor cursor = db.rawQuery(sql, new String[]{myname+"%"};
可能有人會問為什么不用添加引號,因為參數(shù)代替?號時,自動以字符串的形式代替的。
相關(guān)文章
Android打開淘寶客戶端(手淘)效果及實現(xiàn)代碼
這篇文章主要介紹了Android打開淘寶客戶端(手淘)效果及實現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-04-04Android 實現(xiàn)背景圖和狀態(tài)欄融合方法
下面小編就為大家分享一篇Android 實現(xiàn)背景圖和狀態(tài)欄融合方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01調(diào)用startService會拋出IllegalStateException異常解決
這篇文章主要為大家介紹了調(diào)用startService會拋出IllegalStateException異常解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07Android自定義View之邊框文字、閃爍發(fā)光文字
這篇文章主要為大家詳細介紹了Android自定義View之邊框文字、閃爍發(fā)光文字,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01Android ListView實現(xiàn)圖文列表顯示
這篇文章主要為大家詳細介紹了Android ListView實現(xiàn)圖文列表顯示,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01