【发布时间】:2015-06-28 17:07:32
【问题描述】:
我有一个包含 23,000 个单词的数据库。我想让查询返回所有以某个搜索字符串开头的单词。阅读sqlite LIKE problem in android 后,我能够使用 LIKE 获得有效的查询。这里是:
SQLiteDatabase db = getReadableDatabase();
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
String [] sqlSelect = { KEY_WORD };
String sqlTables = TABLE_WORDS;
//String selection = KEY_FUZZYWORD + " =?"; // for an exact match
String selection = KEY_FUZZYWORD + " LIKE ?";
String[] selectionArgs = { searchString + "%" };
String limit = Integer.toString(WORD_QUERY_LIMIT);
qb.setTables(sqlTables);
Cursor cursor = qb.query(db, sqlSelect, selection, selectionArgs, null, null, null, limit);
关键线是
String selection = KEY_FUZZYWORD + " LIKE ?";
String[] selectionArgs = { searchString + "%" };
但我也读过Why do we need the GLOB clause in SQLite? 区分大小写适合我的情况,所以我想我会尝试一下。如何使用带有 selectionArgs 的 SQLiteQueryBuilder 进行设置?我很难找到一个例子。 (我不想使用 rawQuery 来避免 SQL 注入。)
【问题讨论】:
标签: android sqlite glob sql-like