2011-02-28 63 views
1

我正在使用SQLite存儲小型移動應用程序的數據。當用戶按下「下一個」按鈕時,我想要從下一個記錄加載數據。我已經完成了該部分,但是如何檢查並查看下一個記錄是否是最後一個(最大)記錄?如果是這樣,是否像設置id = 0開始時一樣簡單?SQLite檢查是否在最大ID

我目前的 '未來'():

private function nextMoveRPart(event:EffectEvent):void 
{ 
    var cardNumber:int = parseInt(cardNumberLabel.text); 

    stmt.sqlConnection = conn; 
    conn.open(File.applicationStorageDirectory.resolvePath("FlashCards.db")); 
    stmt.text = "SELECT * FROM cardItems IF id <= MAX(id)" + "AND id <= MAX(id) WHEN id = ?"; 
    stmt.parameters[0] = cardNumber+1; 
    stmt.addEventListener(SQLEvent.RESULT, resultHandlerPrev); 
    stmt.execute(); 
    conn.close(); 
    moveEffectRPart2.play(); 
} 

resultHandlerNext()

function resultHandlerNext(event:SQLEvent):void // result handler next 
{ 
    var result:SQLResult = stmt.getResult(); 
    var numResults:int = result.data.length; 
    for(var i:int = 0; i < numResults; i++) 
    { 
     var row:Object = result.data[i]; 
     stext1.text = row.cSide1; 
     stext2.text = row.cSide2; 
     cardNumberLabel.text = row.id; 
    } 
} 

謝謝!

回答

1

很難說沒有定義,但實質上,要獲得下一個記錄並環繞,我會這樣做。

首先,計數是否至少有一個記錄要去。

SELECT COUNT(*) FROM cardItems WHERE id > ? 

如果計數結果至少爲1,獲取該結果:

SELECT * FROM cardItems WHERE id > ? ORDER BY id LIMIT 1 

如果計數結果爲0,回退:

SELECT * FROM cardItems WHERE id = (SELECT MIN(id) FROM cardItems) 

這需要的幾起案件的照顧。例如,如果您的身份證不總是「當前+1」(假設您有刪除的記錄),並且您的第一個身份證不是0。