2011-02-27 40 views
0

我有一個使用sqlite數據庫的移動應用程序。我似乎無法弄清楚當用戶按下「下一個」按鈕時如何訪問下一條記錄。我的數據庫使用'id'作爲主鍵,自動增量爲整數。在SQLite數據庫中獲取移動應用程序的下一條記錄

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 WHERE id = ?" + "AND id <= MAX(id)"; 
      stmt.parameters[0] = cardNumber+1; 
      stmt.addEventListener(SQLEvent.RESULT, resultHandlerPrev); 
      stmt.execute(); 
      conn.close(); 
      moveEffectRPart2.play(); 
     } 
     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

您可以隨時將當前id存儲在ActionScript中的某個變量中。然後您將能夠重寫整個查詢字符串。我想你可以這樣寫:

stmt.text = "SELECT * FROM cardItems WHERE id > " + current_id + " ORDER BY id ASC LIMIT 1;"; 

current_id是一個ActionScript變量。這對於s​​qlite應該足夠好了。您可以將第一條記錄的current_id設置爲0。如果用戶點擊下一個按鈕,則應該在已存儲的記錄中存儲當前的ID。

第二個選項是使用OFFSET。它從返回的一組行中排除一些記錄。

stmt.text = "SELECT * FROM cardItems ORDER BY id ASC LIMIT 1 OFFSET " + your_offset + ";"; 

your_offset是一個ActionScript變量。如果您想獲得第一個記錄,則爲0,第二個爲1,第三個爲2,依此類推。

===

試試這個代碼。

protected function button6_clickHandler(event:MouseEvent):void // pushed --> button 
     { 

      var cardNumber:int = parseInt(cardNumberLabel.text); 
      /* Deleted */ 
      var sqlresult:SQLResult = stmt.getResult(); 
      stmt.sqlConnection = conn; 
      conn.open(File.applicationStorageDirectory.resolvePath("FlashCards.db")); 
      /*Edited two lines*/ 
      stmt.text = "SELECT * FROM cardItems WHERE id > ? ORDER BY id ASC LIMIT 1"; 
      stmt.parameters[0] = cardNumber; 
      stmt.execute(); 
      trace(sqlresult.data); // value = [object Object] 
      stext1.text = sqlresult.data.cSide1; 
      trace(sqlresult.data.cSide1); // value = 'undefined' 
      cardNumberLabel.text = sqlresult.data.id; 
      trace(sqlresult.data.id); // value = 'undefined' 
      conn.close(); 
      moveEffectRPart1.play(); 
      moveEffectRPart1.addEventListener(EffectEvent.EFFECT_END, nextMoveRPart); 

     } 
+0

@Michas,我會使用SQL存儲它嗎?或者在actionscript中。對不起,我對兩個人都很新。 – Jordan 2011-02-27 15:00:44

+0

我編輯了我的答案。 – Michas 2011-02-27 15:31:40

+0

@Michas,好的,謝謝!我會試試看! – Jordan 2011-02-27 15:38:11

相關問題