Android SQL查询返回的结果比预期的少一个

Android SQL查询返回的结果比预期的少一个,android,android-sqlite,Android,Android Sqlite,我的查询总是返回比预期少一个结果。最初我有6行需要返回,它一直只返回5行,我决定添加另一行,现在它返回6行而不是7行,它总是最后一行。 我在SQLite Admin中测试了相同的查询,结果很好 Cursor cursor = database.rawQuery("SELECT DISTINCT * FROM Activities JOIN UserMakesActivities ON UserMakesActivies.ActivityID = Activitie

我的查询总是返回比预期少一个结果。最初我有6行需要返回,它一直只返回5行,我决定添加另一行,现在它返回6行而不是7行,它总是最后一行。 我在SQLite Admin中测试了相同的查询,结果很好

Cursor cursor = database.rawQuery("SELECT DISTINCT * FROM Activities JOIN 
       UserMakesActivities ON UserMakesActivies.ActivityID = 
       Activities.intID WHERE UserMakesActivies.UserID = " + ID, null);
欢迎提出任何意见。如果由于某种原因sql不正确,那是因为我在这里更改了它以使其更清晰

编辑:根据要求,这是我移动光标的地方

    cursor.moveToFirst();
    Log.i("tag", "contagem " + cursor.getCount());
    while (!cursor.isAfterLast()) {
        Atividade atividade = cursorToAtividade(cursor);
        atividades.add(atividade);
        cursor.moveToNext();
    }

private static Atividade cursorToAtividade(Cursor cursor) {
    Atividade atividade = new Atividade();
    atividade.setNum(cursor.getInt(0));
    atividade.setNome(cursor.getString(1));
    atividade.setInformacao(cursor.getString(2));
    atividade.setAtividadeFeita((cursor.getInt(3) == 1) ? true : false);
    atividade.setAtividadeMonitorada((cursor.getInt(4) == 1) ? true :    false);
    atividade.setTempo(cursor.getInt(5));
    atividade.setTipo(cursor.getString(6));
    return atividade;
}

这可能无法解决您的问题,但我看到一些可疑的事情

首先,最好使用SelectionAgs进行查询:

String[] selectionID = new String[] {ID};
Cursor cursor = database.rawQuery("SELECT DISTINCT * FROM Activities JOIN 
       UserMakesActivities ON UserMakesActivies.ActivityID = 
       Activities.intID WHERE UserMakesActivies.UserID = ?", selectionID );
还要确保关闭光标以避免内存泄漏

  if (cursor != null){
    Log.i("tag", "contagem " + cursor.getCount());
    for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
        Atividade atividade = cursorToAtividade(cursor);
        atividades.add(atividade);

    }
   cursor.close();
   }

经过一些研究,我找到了一种使用SQLite Manager插件检查数据库的方法,该插件是我从android上获得的


数据库中有一个错误,有了这个信息,我知道我在向数据库提交信息时做错了什么

你怎么知道返回了多少?向我们显示这个code.Log.itag,contagem+cursor.getCount;返回6中的5或7中的6 ou表中是否可能存在重复记录?否,我已经检查过了,并且表中值的创建和插入工作正常。能否提供更多代码?也许你正在移动光标的位置。谢谢你的建议,但是第一个不起作用,我已经关闭了光标,只是忘了发布=/whilecursor.moveToNext就足够了。应该在finally块上关闭游标,否则如果发生异常,它将不会关闭。而且查询永远不会返回null游标,所以检查null是没有用的。