我正在使用rawQuery()
以下类似于此的sql字符串:
selectionArgs = new String[] { searchString };
Cursor c = db.rawQuery("SELECT column FROM table WHERE column=?", selectionArgs);
但是现在我必须在搜索中包含一个通配符,所以我的查询看起来像这样:
SELECT列FROM表WHERE列LIKE'searchstring%'
但是当查询包含单引号时,将抛出以下SQLite异常:android.database.sqlite.SQLiteException: bind or column index out of range
如何在带有通配符元素的SQL查询中使用selectionArgs运行rawQuery?
答案 0 :(得分:24)
您必须将%
附加到selectionArgs本身:
selectionArgs = new String[] { searchString + "%" };
Cursor c = db.rawQuery("SELECT column FROM table WHERE column=?", selectionArgs);
注意:%
字符串中的_
和searchString
仍然可用作通配符!
答案 1 :(得分:19)
Sqlite框架会自动将单引号放在?内部人物。
String [] selectionArgs = {searchString + "%"};
Cursor c;
// Wrap the next line in try-catch
c = db.rawQuery("SELECT column FROM table WHERE like ?", selectionArgs);
就是这样。
答案 2 :(得分:0)
String query = "SELECT column FROM table WHERE column=%s";
String q = String.format(query, "\""+searchString + "%\"");
Cursor c = db.rawQuery(q, null);