房间搜索查询

时间:2018-10-22 05:40:16

标签: android android-sqlite android-room

当我想使用会议室查询在数据库中搜索用户时,我必须输入全名才能获得结果。如何逐字母搜索数据库?

    @Query("SELECT * FROM database WHERE name LIKE :search")
    fun find(search:String?):List<User>

2 个答案:

答案 0 :(得分:2)

尝试

@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>

答案 1 :(得分:1)

对于以这种方式进行的搜索,在您输入“ 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();
        }
    }
相关问题