2012-03-16 55 views
0

我目前使用遊標檢索整個數據庫檢索排前三的是Android數據庫的內容 我的代碼是在我的代碼使用遊標

public Cursor getAll() { 
    return (getReadableDatabase().rawQuery(
      "SELECT _id, note, amt, dueDate FROM New", null)); 

} 

的檢索內容的功能在listview中填充它們。

現在我想要使用光標檢索相同數據庫的前三行的內容以顯示在另一個列表視圖中。

需要幫助,在此先感謝。

回答

0

這樣做是對的結果數量限制在3到正確的方法:

"SELECT _id, note, amt, dueDate FROM New ORDER BY _id LIMIT 3" 

然後你只需遍歷光標(像往常一樣)

+0

其工作伴侶。謝謝 – user1166422 2012-03-16 10:54:35

+0

很高興我可以幫助:) – MByD 2012-03-16 10:55:08

0

既然你已經獲得了Cursor,爲了得到結果的前三排,你這樣做:

Cursor cursor = getAll(); 
cursor.moveToFirst(); 
int count = 0; 
while(!cursor.isAfterLast() && count < 3) 
{ 
    // Grab your data here using cursor.getLong(0), cursor.getString(1) etc. 
    // and store it an array. 
    count++; 
    cursor.moveToNext(); 
} 
cursor.close(); 

您可能希望通過增加一個LIMIT 0,3限制查詢結果最多三個聲明到您的SQL。獲得了包含您的記錄的最多三個元素的數組後,您可以繼續將它們放在您所指的其他ListView中。您可以通過將它們添加到此ListView的源數組中來完成此操作。然後調用ListView適配器的notifyDataSetChanged方法使其自行更新。

+0

其工作,謝謝隊友 – user1166422 2012-03-16 11:05:19

0

所以你可以通過兩種方式做到這一點:

  1. 創建一個單獨的選擇:

    SELECT * FROM Table_Name LIMIT 3; 
    
  2. 選擇從光標三行:

    int n = 0; 
    cursor.moveToFirst(); 
    while (!cur.isAfterLast() && n < 3) { 
        // Use the data 
        n++; 
        cur.moveToNext(); 
    } 
    cur.close(); 
    
+0

謝謝大家。解決了這個問題,並理解了一些方法來做到這一點。 – user1166422 2012-03-16 11:03:14