簡體   English   中英

SQLite 僅返回第一行至 SELECT * 語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM