在Android SQLite表中返回Count(*)

时间:2014-01-04 21:41:27

标签: java android sqlite

这是我的简单功能:

public int countCats(String tableName) {
    int catCount = 0;
    Cursor cursor = database.rawQuery("SELECT COUNT(*) FROM " + MySQLiteHelper.TABLE_CAT, null);
    if (cursor != null) {
        catCount = cursor.getColumnIndex("COUNT");
    }

    return catCount;
}

此表中有11行。但是这个函数返回-1。如何处理这个问题?

修改

我已更新到此:

public int countCats(String tableName) {
    int catCount = 0;
    Cursor cursor = database.rawQuery("SELECT COUNT("+ MySQLiteHelper.COLUMN_CAT+ ") FROM " + MySQLiteHelper.TABLE_CAT, null);
    if (cursor.moveToFirst()) {
        catCount = cursor.getInt(0);
    }
    cursor.close();


    return catCount;
}

现在我得到0;

3 个答案:

答案 0 :(得分:3)

你忘记打电话了

cursor.moveToFirst();

答案 1 :(得分:3)

您只询问游标中不存在的列COUNT的列索引。因此返回-1。

要检索计数值,请将光标移动到第一行并获取第一列值:

if (cursor.moveToFirst()) {
    catCount = cursor.getInt(0);
}

(A COUNT(*)查询将始终包含结果行,但无论如何检查moveToFirst()的结果都是一个好习惯。)

答案 2 :(得分:1)

您只是在寻找结果的索引,而不是值本身。

现在您知道您想知道的值在第一列中。现在你必须转到第一行并获取该值。

cursor.moveToFirst();
int count=cursor.getInt(1);