Как выбрать один из двух столбцов для функции поиска? - PullRequest
0 голосов
/ 22 января 2019

Итак, я создал базу данных с двумя столбцами: Имя и Информация.Теперь для моей функции поиска, если пользователь вводит что-то похожее на информацию или имя, я хочу, чтобы это отображалось на экране.На данный момент это делает только один или другой, я не могу сделать это, чтобы сделать оба.Итак, я знаю, что проблема заключается в моем методе выбора в базе данных.На данный момент он установлен следующим образом:

Теперь, если я добавлю «Info Like?», Он показывает поиск на основе столбца «Info», и если я изменю его на «Name Like?»показывает поиск по столбцу Имя.

   public List<myList> getNameandInfo(String text) {
     SQLiteDatabase db = getReadableDatabase();
    SQLiteQueryBuilder qb = new SQLiteQueryBuilder();


    //Column Name from database table
    String[] sqlSelect = {"Name", "Info"};
    String tableName = "Grocery"; // table name

    qb.setTables(tableName);

    //This line of code only shows result for Info column
 Cursor cursor = qb.query(db, sqlSelect, "Info LIKE ?", new String[]{"%" + 
 text + "%"}, null, null, null);
    List<Mylist> result = new ArrayList<>();
    if (cursor.moveToFirst()) {
        do {
            Mylist myList = new Mylist();

    myList.setName(cursor.getString(cursor.getColumnIndex("Name")));

    myList.setInfo(cursor.getString(cursor.getColumnIndex("Info")));

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

//tried this line of code but it crashes the app
   Cursor cursor = qb.query(db, sqlSelect, ("Name LIKE ?")+("Info LIKE ?"), new String[]{"%" + text + "%"}, null, null, null);

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Возможно, вы можете использовать ИЛИ в запросе:

Cursor cursor = qb.query(db, sqlSelect, ("Name LIKE ? OR Info LIKE ?"), new String[]{"%" + text + "%"}, null, null, null);
0 голосов
/ 22 января 2019

Измените WHERE деталь с:

("Name LIKE ?")+("Info LIKE ?")

до:

"Name LIKE ? AND Info LIKE ?"

или, может быть, вам нужно OR?
Также для аргументов нужно 2 строки, а не только 1:

"%" + text + "%"

поэтому перейдите на что-то вроде этого:

new String[]{"%" + text1 + "%", "%" + text2 + "%"}

Если у вас есть только 1 значение для проверки имени и информации:

 new String[]{"%" + text + "%", "%" + text + "%"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...