Как мне получить строку курсора с определенным значением

#android #sql #kotlin

#Android #sql #kotlin

Вопрос:

У меня есть

 var profileDatabase: SQLiteDatabase
 

Мне нужно использовать его, чтобы получить курсор только с нужной мне строкой со всеми столбцами в ней

Если у меня есть такие данные, как

Имя возраст Цвет
Сэм 12 Белый
Джон 13 Синий

Я просто хочу получить курсор с

Имя возраст Цвет
Сэм 12 Белый

Моя идея состояла бы в том, чтобы сделать следующее

 val cursor = profileDatabase.query("profile_table", null, "the_column_i_want_to_check_if_it_has_a_string",
                "a_string_to_check_for", null, null, null) 
// Like so

val cursor = profileDatabase.query("profile_table", null, "name",
                "Sam", null, null, null) 
 

Однако для ввода, где находится Sam, требуется массив<String!>. Я пытался arrayof("Sam") , но я получаю

     java.lang.IllegalArgumentException: Cannot bind argument at index 1 because the index is out of range.  The statement has 0 parameters.
 

Итак, как мне правильно получить курсор?

Ответ №1:

Попробуйте использовать это

  Cursor cursor;
 String[] columns = {"name", "age", "color"};
 cursor = sqLiteDatabase.query("profile_table", columns, "name=?", new String[]{"Sam"}, null, null, null);
 if (cursor != null) {
 cursor.moveToFirst();
 }
        
 

Комментарии:

1. Хм, позвольте мне продолжить расследование… Cursor.movetofirst, похоже, заботится о том, когда у меня есть одна строка

2. Да, это было проницательно, я думаю, проблема также заключалась в том, что я обслуживал пустую таблицу