Java Android SQLite表中的返回计数(*)

Java Android SQLite表中的返回计数(*),java,android,sqlite,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");

以下是我的简单函数:

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

你忘了打电话了

cursor.moveToFirst();
你忘了打电话了

cursor.moveToFirst();

您只是查找结果的索引,而不是值本身

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

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

您只是查找结果的索引,而不是值本身

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

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

您只需要为游标中不存在的列
COUNT
请求列索引。因此返回-1

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

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

(一个
COUNT(*)
查询将始终有一个结果行,但检查
moveToFirst()
的结果是一个好习惯。)

您只需要为光标中不存在的列
COUNT
请求列索引。因此返回-1

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

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

(A
COUNT(*)
查询将始终有一个结果行,但检查
moveToFirst()
的结果是一个好习惯。)

请注意,如果您不知道它返回-1的原因,可以使用
getColumnIndexOrThrow(String)
查看发生了什么(“如果您希望该列存在,请使用
getColumnIndexOrThrow(String)”
相反,这将使错误更加清楚。”)谢谢,非常好的信息请注意,如果您不知道它返回-1的原因,可以使用
getColumnIndexOrThrow(String)
查看发生了什么(“如果您希望该列存在,请使用
getColumnIndexOrThrow(String)
,这将使错误更加清楚。”)谢谢,非常好的信息我做了一个小的更新;现在我得到0。我更改了上面的代码。可能没有行。在问题的其他地方,您声明有11个-您有什么证据支持该声明?好的,代码看起来是正确的,但它可能是实际的表。我相信有11个,但我要确认一下。谢谢。我做了一个小更新;现在我得到0。我更改了上面的代码。可能没有行。在问题的其他地方,您声明有11个-您有什么证据支持该声明?好的,代码看起来是正确的,但它可能是实际的表。我相信有11个,但我要确认一下。谢谢。仅供参考,列索引从0开始。(bind arg索引从1开始)我写了一篇文章,把它和问题中给出的列号混在一起。仅供参考,列索引从0开始。(bind-arg索引从1开始)我从脑海中写下了这一点,并将其与问题中给出的列号相混淆。