#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. Да, это было проницательно, я думаю, проблема также заключалась в том, что я обслуживал пустую таблицу