房间搜索查询
Room search query
当我想使用房间查询在我的数据库中搜索用户时,我必须输入全名才能获得结果。如何在数据库中逐字搜索?
@Query("SELECT * FROM database WHERE name LIKE :search")
fun find(search:String?):List<User>
尝试
@Query("SELECT * FROM database WHERE name LIKE :search")
fun find(search:String?):List<User>
search = "%Kourosh%";
find(search);
//OR
@Query("SELECT * FROM database WHERE name LIKE '%' || : arg0 || '%'")
fun find(search:String?):List<User>
这样的搜索,你输入"K",出现"Kourosh",你可以使用这样的代码:
这使得逐个字母搜索单词。
public List<Bean> getWords(String englishWord) {
if(englishWord.equals(""))
return new ArrayList<Bean>();
String sql = "SELECT * FROM " + TABLE_NAME +
" WHERE " + ENGLISH + " LIKE ? ORDER BY " + ENGLISH + " LIMIT 100";
SQLiteDatabase db = initializer.getReadableDatabase();
Cursor cursor = null;
try {
// this is the main thing
cursor = db.rawQuery(sql, new String[]{"%" + englishWord + "%"});
List<Bean> wordList = new ArrayList<Bean>();
while(cursor.moveToNext()) {
int id = cursor.getInt(0);
String english = cursor.getString(1);
String bangla = cursor.getString(2);
String status = cursor.getString(3);
wordList.add(new Bean(id, english, bangla, status));
}
return wordList;
} catch (SQLiteException exception) {
exception.printStackTrace();
return null;
} finally {
if (cursor != null)
cursor.close();
}
}
当我想使用房间查询在我的数据库中搜索用户时,我必须输入全名才能获得结果。如何在数据库中逐字搜索?
@Query("SELECT * FROM database WHERE name LIKE :search")
fun find(search:String?):List<User>
尝试
@Query("SELECT * FROM database WHERE name LIKE :search")
fun find(search:String?):List<User>
search = "%Kourosh%";
find(search);
//OR
@Query("SELECT * FROM database WHERE name LIKE '%' || : arg0 || '%'")
fun find(search:String?):List<User>
这样的搜索,你输入"K",出现"Kourosh",你可以使用这样的代码:
这使得逐个字母搜索单词。
public List<Bean> getWords(String englishWord) {
if(englishWord.equals(""))
return new ArrayList<Bean>();
String sql = "SELECT * FROM " + TABLE_NAME +
" WHERE " + ENGLISH + " LIKE ? ORDER BY " + ENGLISH + " LIMIT 100";
SQLiteDatabase db = initializer.getReadableDatabase();
Cursor cursor = null;
try {
// this is the main thing
cursor = db.rawQuery(sql, new String[]{"%" + englishWord + "%"});
List<Bean> wordList = new ArrayList<Bean>();
while(cursor.moveToNext()) {
int id = cursor.getInt(0);
String english = cursor.getString(1);
String bangla = cursor.getString(2);
String status = cursor.getString(3);
wordList.add(new Bean(id, english, bangla, status));
}
return wordList;
} catch (SQLiteException exception) {
exception.printStackTrace();
return null;
} finally {
if (cursor != null)
cursor.close();
}
}