2013-06-18 162 views
0

我有一個表,其中每一個都是flaged的,在列is_active或0或1.我的問題是選擇所有標誌爲1的組,並且事情是,如果我有0記錄與1,工作正常,如果我有1記錄1,工作正常,但如果多於一個標記爲1它總是隻返回1記錄,一個最小的ID。 這裏是代碼:選擇總是返回1條記錄

 String query = "SELECT _id FROM groups WHERE is_active = ?"; 
     String[] args = { "1" }; 
     Cursor c = db.rawQuery(query, args); 

     if (c == null || c.getCount() == 0) { 
      Log.v("t", "foo"); 
      return null; 
     } else { 
      int count = c.getColumnCount(); 
      String[] ids = new String[count]; 
      Log.v("t", "aktywnych group: ------ " + count); 
      for (int i = 0; i < count; i++) { 
       c.moveToPosition(i); 
       ids[i] = String.valueOf(c.getInt(c.getColumnIndex("_id"))); 
      } 
      return ids; 

     } 

你現在看到的是另一種嘗試,我已經嘗試了許多不同的方式來獲得這些數據,永遠不會奏效。 如果您有任何想法,我該如何解決它,我會很好。

回答

1

這是因爲你使用這個:

int count = c.getColumnCount(); 

按照official documentation,這個方法返回你的要求的列數。看到您的查詢,您只需要一列:_id。所以結果將始終爲1或0,如果它什麼都找不到。

,應使用此行:

int count = c.getCount(); 
+0

哦該死。非常感謝! –

+0

@RobertDzieza,如果它解決了您的問題,請通過接受和滿意答覆給Google員工好的通知。 :)。好的捕獲+1。 –