我的查询不断返回一个比预期更少的结果。最初我有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;
}
答案 0 :(得分:0)
这可能无法解决您的问题,但我发现其中有一些可疑的事情。
首先,最好将selectionArgs用于您的查询:
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();
}
答案 1 :(得分:0)
经过一番研究后,我找到了一种方法来检查我的数据库使用SQLite管理器插件为我从here获得的
数据库中出现错误,我知道在向数据库提交信息时我做错了什么