2013-06-18 121 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。 –