sqlite с предложением where не работает

-3

Ниже приведен фрагмент кода. Мой запрос возвращает одно значение, но я не знаю, как извлечь это значение. showtoast(ID) ничего не показывает. Пожалуйста помоги

try {
    String ID = null;
    mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE, null);
    Cursor allrows = mydb.rawQuery(
        "SELECT REGID FROM " + TABLE + " where NAME = '" + name_from_spinner + "'" ,
        null
    );

    if (allrows.moveToFirst()) {
        showToast("not empty");
        ID = allrows.getString(0);
        showToast(ID);
    } else {
        showToast("empty");
    }

    allrows.close();
    mydb.close();
} catch (Exception e) {
    Toast.makeText(
        getApplicationContext(),
        "Error encountered.",
        Toast.LENGTH_LONG
    );
}
  • 0
    читать документацию о том, как читать значения из курсора
Теги:

1 ответ

1

Вы никогда не получите нулевой курсор из rawQuery. Вместо этого используйте moveToFirst:

if (allrows.moveToFirst()) {
    showToast("not empty");
    ID = allrows.getString(0);
    showToast(ID);
}

Кроме того, поскольку вы выбираете только 1 столбец, вы знаете, что индекс будет равен 0.

Если вы ожидаете получить несколько столбцов, вы можете закодировать курсор следующим образом:

if (allrows.getCount() == 0) {
    showToast("empty");
} else {
    while (allrows.moveToNext()) {
        ID = allrows.getString(0);
        showToast(ID);
    }
}
  • 0
    я сделал так, как вы сказали. мой код не входит в оператор if, я использовал оператор else просто для того, чтобы посмотреть, входит ли мой код в блок if, он выполняется. Блок else.my выполняется. Скажите, пожалуйста, в чем может быть проблема
  • 0
    @nainasony означает, что строки не найдены.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню