这是我的简单功能:
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
;
答案 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);