Android:带有通配符的SQL rawQuery(%)

我有一个rawQuery()以下的SQLstring类似于这样的:

 selectionArgs = new String[] { searchString }; Cursor c = db.rawQuery("SELECT column FROM table WHERE column=?", selectionArgs); 

但现在我必须在search中包含一个通配符,所以我的查询看起来像这样:

SELECT列FROM表WHERE列LIKE'searchstring%'

但是,当查询包含单引号引发以下SQLiteexception: android.database.sqlite.SQLiteException: bind or column index out of range

我怎样才能运行一个rawquery selectArgs内的通配符元素的SQL查询?

Solutions Collecting From Web of "Android:带有通配符的SQL rawQuery(%)"

您必须将%附加到selectionArgs本身:

 selectionArgs = new String[] { searchString + "%" }; Cursor c = db.rawQuery("SELECT column FROM table WHERE column=?", selectionArgs); 

注意:因此, searchStringstring中的%_仍然作为通配符使用!

Sqlite框架自动将单引号放在? 字符内部。

 String [] selectionArgs = {searchString + "%"}; Cursor c; // Wrap the next line in try-catch c = db.rawQuery("SELECT column FROM table WHERE like ?", selectionArgs); 

而已。

Brad Hein和Mannaz的解决scheme对我来说不起作用,但是这样做:

 String query = "SELECT column FROM table WHERE column=%s"; String q = String.format(query, "\""+searchString + "%\""); Cursor c = db.rawQuery(q, null);