[英]SQLite returns only first row through SELECT * Statement
我在我的sqlite
表中保存了一些記錄,並且記錄保存得非常好。 當我嘗試檢索這些記錄時,問題就來了。 假設我的 sqlite 中有 3 條記錄,所以當我檢索這些記錄時,它會返回 3 次第一條記錄。 計數是正確的,但為什么它只返回我的第一條記錄 3 次?
這就是我檢索記錄的方式:
public ArrayList<Cursor> getAllBookings() {
ArrayList<Cursor> bookingsList = new ArrayList<>();
SQLiteDatabase readableDatabase = this.getReadableDatabase();
Cursor cursor = readableDatabase.rawQuery("SELECT * FROM " + BOOKING_TABLE, null);
cursor.moveToFirst();
for (int i = 0; i < cursor.getCount(); i++) {
bookingsList.add(cursor);
cursor.moveToNext();
}
return bookingsList;
}
請注意,我已在Mozilla SQLiteManager
中檢查了該table
,並且所有記錄都已成功存儲。
問題是當您應該提取並添加每個 cursor 行包含的值時,您正在將 cursor 本身添加到您的預訂列表中。
因此,如果您有 class 預訂,則該方法應聲明為
public List<Booking> getAllBookings() {
另外我認為最好在這里有一個 do/while 循環並運行它直到cursor.moveToNext
返回 false 並在循環內使用getString
或類似方法提取所有值
List<Booking> bookingsList = new ArrayList<>();
//...
do {
Booking booking = new Booking();
booking.setSomething(cursor.getString("somethingColumn"));
//... other columns
bookingsList.add(booking);
} while (cursor.moveToNext());
如果您沒有自定義 class 那么您可以為每一行使用一個數組或一個列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.