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开始)我从脑海中写下了这一点,并将其与问题中给出的列号相混淆。