我正在使用具有 4 列(_id、名称、分数、状态)的数据库,并使用以下内容将所有行导入到 arrayList 中。
Cursor assessmentStatus = myDbHelper.getAllTests();
assessmentStatus.moveToFirst();
while (!assessmentStatus.isAfterLast()) {
allAssessments.add(assessmentStatus.getString(1));
if(assessmentStatus.getString(3).equals("locked")) { lockedAssessments.add(assessmentStatus.getString(1)); }
assessmentStatus.moveToNext();
}
assessmentStatus.close();
第一条语句 (allAssessments.add...) 工作正常。如果我使用 getString(0).equals 或 getString(1).equals,if 语句有效,但如果我使用 getString 3 或 4 则无效 - 应用程序崩溃。如果我使用 getColumnIndex("status").equals 它也不起作用
已尝试清理项目,但无法弄清楚这种行为。任何想法为什么会这样?!
更新:
1)getAllTests如下(也试过rawQuery SELECT * FROM ...等
public Cursor getAllTests()
{
return myDataBase.query("assessment_tests", new String[] {"_id", "name", "scores", "status"}, null, null, null, null, null);
}
2) 所有字段都是文本字段。卸载,清理项目并重新安装没有效果。
3)打开数据库:
DataBaseHelper myDbHelper = new DataBaseHelper(null);
myDbHelper = new DataBaseHelper(this);
try {
myDbHelper.openDataBase();
}catch(SQLException sqle){
throw sqle;
}
我知道数据库创建工作正常,因为我有其他工作正常的表......