国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中的SQL查詢語句LIKE綁定參數問題解決辦法(sqlite數據庫)

2020-04-11 11:49:47
字體:
來源:轉載
供稿:網友

由于考慮到數據庫的安全性,不被輕易SQL注入,執行查詢語句時,一般不使用直接拼接的語句,而是使用參數傳遞的方法。然后在使用參數傳遞的方法中時,發現當使用like方式查詢數據時,很容易出現一個問題。

錯誤案例:

復制代碼 代碼如下:
String myname = "abc";
String sql = "select * from mytable where name like '?%'";
Cursor cursor = db.rawQuery(sql, new String[]{myname};

運行提示如下錯誤:
復制代碼 代碼如下:
java.lang.IllegalArgumentException: Cannot bind argument at index 1 because the index is out of range. The statement has 0 parameters.

根據錯誤提示可知,sql語句中的?號沒有被識別出來,從而new String[]{myname}沒法替代sql中的?號。?號沒有被識別出來的原因估計是?號外有單引號,但是在sql中like語句的值和%號需要用引號圍著。

為了解決sql中?號無法識別,必須去掉?號外的引號,那么%號也需要去掉。所以,得在后面代替?號的參數中添加上%號。

所以,正確的案例如下:

復制代碼 代碼如下:

String myname = "abc";
String sql = "select * from mytable where name like ?";
Cursor cursor = db.rawQuery(sql, new String[]{myname+"%"};

可能有人會問為什么不用添加引號,因為參數代替?號時,自動以字符串的形式代替的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武平县| 溧水县| 吴旗县| 萍乡市| 宁陕县| 新巴尔虎左旗| 陇川县| 龙口市| 古蔺县| 甘孜| 江源县| 鄂尔多斯市| 鄂托克旗| 建宁县| 乾安县| 拉孜县| 昌乐县| 临漳县| 永州市| 西吉县| 东宁县| 永昌县| 福海县| 大厂| 锡林浩特市| 綦江县| 南平市| 永平县| 新兴县| 林西县| 怀柔区| 日喀则市| 桂东县| 军事| 会理县| 汤阴县| 出国| 牙克石市| 阿城市| 大埔区| 荥经县|