Im пытается сохранить список книг, но когда я читаю таблицу, я получаю только одну книгу.Android: sqlite сохраняет только один предмет
DatabaseHelper.java
...
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(
"CREATE TABLE IF NOT EXISTS "+ TABLE_NAME +" (id TEXT PRIMARY KEY,title TEXT, description TEXT)"
);
}
public boolean insertBook (String id, String title, String publisher, String format,
String description, String creator, String category, String language, String date)
{
SQLiteDatabase db = getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("id", id);
contentValues.put("title", title);
contentValues.put("description", description);
db.insert(TABLE_NAME, null, contentValues);
db.close();
return true;
}
public List<Book> getBooks()
{
Book book = new Book();
List<Book> bookList = new ArrayList<Book>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor= db.rawQuery("select * from tblbooks", null);
if (cursor.moveToLast()) {
do {
book.setId(cursor.getString(cursor.getColumnIndex("id")));
book.setTitle(cursor.getString(cursor.getColumnIndex("title")));
book.setDescription(cursor.getString(cursor.getColumnIndex("description")));
bookList.add(book);
} while (cursor.moveToNext());
}
return bookList;
}
...
MainActivity.java
Здесь у меня есть для СЗП, который изменяет значения в книге, и в этом СЗП я поставил этот код так, что с каждая новая книга книга будет сохранена:
...
//Save books localy
dbHelper.insertBook( //the value of book changes, I've tested it so this is not the problem
book.getId(),
book.getTitle(),
book.getDescription()
);
После этого я использую этот код для получить все книги из базы данных, это где я получаю только 1 книгу ...
...
//Get bookshelf of local database
for (int i = 0; i < dbHelper.getBooks().size(); i++) {
bookList.add(dbHelper.getBooks().get(i)); <-- should put all books in this list.
}
...
выход всегда только одна книга ...
Курсор перемещается в последний элемент и останов вашего цикла после одной итерации. просто измените для cursor.movetofirsrt –