конвертировать qb.query в rawQuery? - PullRequest
0 голосов
/ 14 января 2020

Я хочу написать запрос, который будет искать в базе данных и давать все элементы, в которых слова начинаются с поискового слова. Например, если я ищу слово RULE, оно должно искать в базе данных и находить все слова в предложении, которые содержат RULE.

This one, но Cursor cursor = qb.query(db,sqlSelect, "Japanese LIKE ?",new String[] будет искать только один столбец. («Японский» столбец)

, поэтому я пытаюсь преобразовать qb.query в rawQuery, но не работаю вообще.

public List<Dict> getDictByJapanese(String name)
    {
        SQLiteDatabase db = getReadableDatabase();
        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();

        String[] sqlSelect={"Id","Japanese","Yomikata","Thai","English"};
        String tableName="Dicts";

        qb.setTables(tableName);
        Cursor cursor = qb.query(db,sqlSelect, "Japanese LIKE ?",new String[]{"%"+name+"%"},null,null,null);
        List<Dict> result = new ArrayList<>();
        if(cursor.moveToFirst())
        {
            do{
                Dict dict = new Dict();
                dict.setId(cursor.getInt(cursor.getColumnIndex("Id")));
                dict.setJapanese(cursor.getString(cursor.getColumnIndex("Japanese")));
                dict.setYomikata(cursor.getString(cursor.getColumnIndex("Yomikata")));
                dict.setThai(cursor.getString(cursor.getColumnIndex("Thai")));
                dict.setEnglish(cursor.getString(cursor.getColumnIndex("English")));

                result.add(dict);
            }while (cursor.moveToNext());
        }
        return result;
    }

Я попытался изменить код, как показано ниже, но .. .

Cursor cursor = qb.query(db,sqlSelect, "Japanese LIKE ?"+"Yomikata LIKE ?",new String[]{"%"+name+"%"},null,null,null);

Заранее спасибо.

1 Ответ

0 голосов
/ 14 января 2020

Вы все еще можете использовать query(), добавляя условия к существующему оператору sql следующим образом:

String conditions = "Japanese LIKE ? OR Yomikata LIKE ? OR Thai LIKE ? OR English LIKE ?";
String par = "%"+name+"%"; 
Cursor cursor = db.query(tableName, sqlSelect, conditions, new String[]{par, par, par, par}, null, null, null);

Я использовал логический оператор OR в условиях, потому что предположил, что это то, что Вы можете изменить его на AND, если это ваше требование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...