2011-02-27 67 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

相关问题