2015-11-08 125 views
1

導致:java.lang.IllegalArgumentException:由於索引超出範圍,無法在索引1處綁定參數。聲明 有0個參數。不能在Android SQLite中使用帶有參數和%字符的Like語句

Android不承認?%

?字符我試圖做到這一點:

String selectQuery = "SELECT * FROM config WHERE Directory Like '?%';"; 

SQLiteDatabase db = this.getReadableDatabase(); 
Cursor cursor = db.rawQuery(selectQuery, new String[] {parent}); 

...我已經尋找一個解決方案,但無法找到任何東西,我認爲這是相當particullary 。我試圖這樣做,因爲我想使查詢與Strings工作,其中包含字符'

也許有同樣問題的人可以回答我,我該如何解決這個問題。

回答

1

使用||到Concat的參數和通配符:使用||

SELECT * FROM config WHERE Directory Like ? || '%'; 
+0

這就是我要找的,謝謝先生。 –

+0

仍然沒有工作:(同樣的錯誤「SELECT * FROM配置WHERE目錄像'?'||'%';」 –

+0

@PavelMarian嘗試沒有'''左右? – lad2025

0
SELECT * FROM config WHERE Directory Like '?' || '%'; 

SQLiteDatabase db = this.getReadableDatabase(); 
Cursor cursor = db.rawQuery(selectQuery, new String[] {parent}); 

解決了這個問題

+0

回答: - (... – Sathish

-1

你可以把你有什麼條件爲String變量,然後把它傳遞到您的查詢像這個 - >String Condition="'?"; SELECT * FROM config WHERE Directory Like '"+Condition+"'

+0

並允許SQL注入攻擊 – lad2025

+0

@ lad2025:有很多方法可以阻止SQL注入攻擊。 – karimkhan

+1

第一條規則是: **避免構建自定義字符串,而是使用參數綁定來替代** – lad2025