2011-08-09 69 views
0

我試圖讓我的本地sqlite數據庫顯示單擊按鈕上的下一個記錄。使用Flex實現SQLite數據庫中的「下一步」或「上一步」按鈕

我看過像Getting next record in SQLite database for mobile application這樣的帖子,但是他們的代碼爲我提供了很少的解決方案。這裏是我的代碼示例:

AS3:

private function getNext():void 
     { 
      nextRecordId = targetRecordId + 1; 

      selectStmt = new SQLStatement(); 
      selectStmt.sqlConnection = conn; 
      var sql:String = "SELECT [Index], Title, CAST(Picture AS ByteArray) AS Picture FROM Data WHERE [Index] = 1" ; 
      /* selectStmt.parameters[@nextRecordId] = nextRecordId; */ // Id of next record 
      selectStmt.text = sql; 
      selectStmt.addEventListener(SQLEvent.RESULT, selectResult2); 
      selectStmt.addEventListener(SQLErrorEvent.ERROR, selectError2); 
      selectStmt.execute(); 

     } 

     private function selectResult2(event:SQLEvent):void 
     { 
      selectStmt.removeEventListener(SQLEvent.RESULT, selectResult2); 
      selectStmt.removeEventListener(SQLErrorEvent.ERROR, selectError2); 

      var result2:SQLResult = selectStmt.getResult(); 

      dataField2 = new ArrayCollection(result2.data); 
      dp2 = ArrayCollection(dataField); 

      if (result2.data != null) 
      { 
       pngIndex = result2.data[0].Index; 
       pngTitle = result2.data[0].Title; 
       pngByteArray = result2.data[0].Picture; 
       displayPic.source = pngByteArray; 
      } 
     } 

UI MXML:

<s:Scroller interactionMode="touch" 
      width="640" 
      height="830"> 
     <s:Group> 
      <s:Image id="displayPic" 
        x="0" y="16" 
        width="640" 
        scaleMode="stretch" 
        smooth="true" smoothingQuality="high" 
        /> 
      <!--<s:TextArea x="9" y="731" text="@{pngTitle}"/>--> 
    </s:Group> 
</s:Scroller> 

非常感謝您的幫助/諮詢

+0

爲了澄清,我正在尋找如何從數據庫中調用下一條記錄,以及相應的Android「處理程序」來更新UI。謝謝! – SQLiteNoob

回答

0

我沒有看到你在哪裏'有這個問題。你有沒有試過這個叫谷歌的東西?

selectStmt = new SQLStatement(); 
selectStmt.sqlConnection = conn; 
selectStmt.text = "SELECT Title, CAST(Picture AS ByteArray) AS Picture FROM Data WHERE [email protected] LIMIT 1"; 
selectStmt.parameters['@index'] = index++; 
selectStmt.execute(); 

只要你保持這種指標變量作爲一類變種定在0默認情況下,你應該直到用完行的罰款。當然,還有其他方法可以做到這一點,比如獲取所有行的數組並使用actionscript進行管理。如果你沒有一個非常大的信息數據庫,這很容易。

+0

是的,我聽說過谷歌。而且我已經爲這些內容添加了300多頁的書籤 - 我甚至提供了我發現的最接近的例子來幫助我解決這個問題,並沒有比我找到的其他任何東西更有幫助。感謝您的幫助,噓諷刺委員會。 這不是一個大數據庫,少於100條記錄。我喜歡使用AS3來管理這些東西 - 也許還有一點點。我將如何去添加搜索功能?我需要另一個選擇語句中的另一個變量,但是每次我想執行某個函數時,是否必須重新初始化sql語句? – SQLiteNoob

+0

如果有任何其他Newbs停止: 參數必須位於「」之間,否則您將收到臭名昭着的「屬性未定義」錯誤。即:'selectStmt.parameters [「@ index」] = index ++;' – SQLiteNoob

相關問題