2014-06-18 74 views
3

我有一个表,其中一个特定列的值重复次数。 我想计算它发生的次数。在sqlite,android中计算特定列值的出现次数?

让我们假设数据库有一列作为“选择”在表中重复5次。 我如何计算它?

这是我使用

public String getCountSelect() { 
    String count = ""; 
    String selectQuery = "SELECT COUNT (" + KEY_DEALER_NAME + ") FROM " 
      + TABLE_DEALER + " WHERE " + KEY_DEALER_NAME + " = 'Select'"; 
    Log.e("", selectQuery); 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 
    if (cursor.moveToFirst()) { 
     do { 


      Log.e("", cursor.getString(cursor 
        .getColumnIndex(KEY_DEALER_NAME))); 
     } while (cursor.moveToNext()); 
    } 
    db.close(); 
    return count; 
} 

回答

3

尝试这种方式

String selectQuery = "SELECT " + KEY_DEALER_NAME + " FROM " 
     + TABLE_DEALER + " WHERE " + KEY_DEALER_NAME + " = 'Select'"; 

Cursor cursor = db.rawQuery(selectQuery, null); 

int total_count=cursor.getCount(); 

光标.getCount()方法返回总的受影响行的代码。

0

激发您的查询并返回光标。并且在游标上执行.getCount()函数,它将为您提供查询的总值。

代码: -

cursor.getCount(); 
1

返回列的名称是你写SELECT子句中的东西,即COUNT(DealerName)。 但是,这并不重要,因为你可以使用列的索引,即,你知道这是0列

。不管怎么样,COUNT查询返回一个值,所以你可以使用一个DatabaseUtils辅助函数来使你的代码简单。

最后,COUNT(*)是多一点点高效:

public long getCountSelect() { 
    SQLiteDatabase db = getReadableDatabase(); 
    try { 
     String selectQuery = 
       "SELECT COUNT(*)" + 
       " FROM " + TABLE_DEALER + 
       " WHERE " + KEY_DEALER_NAME + " = 'Select'"; 
     return DatabaseUtils.longForQuery(db, selectQuery, null); 
    } finally { 
     db.close(); 
    } 
} 
相关问题