У меня есть база данных, содержащая таблицу Animal, со столбцами для _id, name, biography.
Я пытаюсь запросить в базе данных конкретную биографию в зависимости от животного, выбранного пользователем (из списка), проблема в том, что курсор вернет только первую биографию в базе данных или вообще не вернет ее.
Может кто-нибудь увидеть, в чем может быть проблема, или предложить несколько полезных советов, я был бы очень признателен.
// Code for obtaining position
protected void onListItemClick(ListView l, View v, int position, long id){
Intent animalIntent = new Intent(this, Animal.class);
animalIntent.putExtra("pos", position);
startActivity(animalIntent);
}
// запрашиваем базу данных для био, где KEY_ROWID запрашивается «позицией» элемента в списке.
myCursor = dbm.getBio (position);
if(myCursor.moveToFirst()){
// querying the cusor, retrieve in index of column BIOGRAPHY, store as column index.
int bio_index = myCursor.getColumnIndexOrThrow(MyDBManager.KEY_BIOGRAPHY);
// return the string from the cursor @ column index
String bio = myCursor.getString(bio_index);
// find textview
animalBio = (TextView)findViewById(R.id.bio);
// Set textView to value of string returned from myCursor @ bio_index
animalBio.setText(bio);
}
// Этот метод всегда возвращает первое значение, сохраненное в базе данных, биография, хранящаяся в базе данных.
общедоступный курсор getBio (int position) {
return qmDB.query(ANIMAL_TABLE, new String[]{
KEY_ROWID,
KEY_BIOGRAPHY,
},
KEY_ROWID,
null,
null,
null,
null);
}
Я пробовал другие варианты, такие как KEY_ROWID = "+" = position, KEY_ROWID = "?", Преобразование позиции в строку, переход в позицию типа long, жесткое кодирование числа и т. Д.
Итак, вы видите, я чувствую, что проблема в операторе запроса, он просто не возвращает ни одной строки, кроме первой, или, если это так, он не отображается!
РЕШЕНИЕ:
Не забудьте обновить базу данных в приложении.