Ниже приведен фрагмент кода. Мой запрос возвращает одно значение, но я не знаю, как извлечь это значение. 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
);
}
Вы никогда не получите нулевой курсор из 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);
}
}