Я сейчас работаю над приложением для Android. У меня есть база данных sqlite, которая хранит текст (который я просто использую как строки в своем приложении) в четырех столбцах. Я пытаюсь вернуть все строки и столбцы из таблицы. Я создал и вставил данные в таблицу и убедился, что они есть с помощью sqlite3 из оболочки adb. Я использую тот же оператор, что и в своей программе, и он возвращает все строки со всеми правильными данными. В моей программе я храню все данные в формате ArrayList<ArrayList<String>>
, перебирая курсор. Он возвращает правильное число ArrayList<String>
, соответствующее строкам, но все они имеют информацию только из последней строки. Вот мой код:
private static final String SELECT = "SELECT * FROM " + TABLE_NAME;
public ArrayList<ArrayList<String>> allRecipes()
{
ArrayList<ArrayList<String>> results = new ArrayList<ArrayList<String>>();
ArrayList<String> recipe = new ArrayList<String>();
Cursor cursor = db.rawQuery(SELECT, null);
if(cursor.moveToFirst())
{
do
{
recipe.clear();
recipe.add(cursor.getString(1));
recipe.add(cursor.getString(2));
recipe.add(cursor.getString(3));
recipe.add(cursor.getString(4));
results.add(recipe);
}while(cursor.moveToNext());
if(cursor != null && !cursor.isClosed())
cursor.close();
}
return results;
}
Затем я перебираю ArrayLists в другой части моей программы, и вся содержащаяся информация представляет собой просто дубликаты последней строки, введенной в таблицу. Я проверил ArrayLists в моем другом методе, как только он его получил, и они все одинаковые, поэтому я предполагаю, что это должно быть проблемой в этом сегменте кода. Я также пробовал оператор select с group by и order by, и он все еще не работает. Использование db.query () с правильными параметрами также вызывает те же проблемы.