Android SQLite聚合函数错误

Android SQLite聚合函数错误,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我正在运行以下查询: String q = "select " + MySQLiteHelper.COLUMN_ID + ", " + MySQLiteHelper.COLUMN_TASK + ", " + MySQLiteHelper.COLUMN_PARENT + ", count(*) from " + MySQLiteHelper.TABLE_TASKS + " where " + MySQLiteHelper.COLUMN

我正在运行以下查询:

String q = "select " + MySQLiteHelper.COLUMN_ID + ", "
        + MySQLiteHelper.COLUMN_TASK + ", "
        + MySQLiteHelper.COLUMN_PARENT + ", count(*) from "
        + MySQLiteHelper.TABLE_TASKS + " where "
        + MySQLiteHelper.COLUMN_ID + " = " + insertId + " group by "
        + MySQLiteHelper.COLUMN_ID + ", " + MySQLiteHelper.COLUMN_TASK
        + ", " + MySQLiteHelper.COLUMN_PARENT;
Cursor cursor = database.rawQuery(q, null);
当我这样读取检索到的数据时:

task.setId(cursor.getLong(0));
task.setTask(cursor.getString(1));
task.setParent(cursor.getLong(2));
task.setChildren(cursor.getInt(3));
我得到以下错误:

03-15 22:15:06.078: E/AndroidRuntime(31426):
    java.lang.IllegalStateException:
    Couldn't read row 0, col 3 from CursorWindow.
    Make sure the Cursor is initialized correctly before accessing data from it.
如果我拆下这条线

task.setChildren(cursor.getInt(3));
它很好用


有人能告诉我这里出了什么问题以及如何解决吗?

试着更换这一行

+ MySQLiteHelper.COLUMN_PARENT + ", count(*) from "

编辑:同时尝试替换

task.setChildren(cursor.getInt(3));

或者可能是

task.setChildren(Integer.parseInt(cursor.getString(3)));

试着换掉这条线

+ MySQLiteHelper.COLUMN_PARENT + ", count(*) from "

编辑:同时尝试替换

task.setChildren(cursor.getInt(3));

或者可能是

task.setChildren(Integer.parseInt(cursor.getString(3)));

您正直接尝试从游标访问3列,但第三列是计数,并且您没有指定该列的别名,这就是您出现此错误的原因。只需尝试放置列名的别名,然后尝试按如下方式访问它:

更换这条线

   + MySQLiteHelper.COLUMN_PARENT + ", count(*) from "


您正直接尝试从游标访问3列,但第三列是计数,并且您没有指定该列的别名,这就是您出现此错误的原因。只需尝试放置列名的别名,然后尝试按如下方式访问它:

更换这条线

   + MySQLiteHelper.COLUMN_PARENT + ", count(*) from "


我尝试将查询改为“…”,将(*)从“…”计算为子项,并使用“n=cursor.getColumnIndex(“children”);”,但我仍然得到相同的错误。我尝试将查询改为“…”,将(*)从“…”计算为子项,并使用“n=cursor.getColumnIndex(“children”);”,但我还是犯了同样的错误。请看我在回复@AppsRoxCom时说了些什么请看我在回复@AppsRoxCom时说了些什么对不起。我刚刚发现了错误。我在两个地方提出了这个问题,但编辑错了。(我把计数(*)从另一个上落下)谢谢你的帮助。当我意识到我的错误时,所有的建议都很有效。很抱歉。我刚刚发现了错误。我在两个地方提出了这个问题,但编辑错了。(我把计数(*)从另一个上落下)谢谢你的帮助。一旦我意识到我的错误,所有的建议都很有效。