我正在处理一个有4列(_id,名称,分数,状态)的数据库,并使用以下命令将所有行导入到arrayList中。不寻常的android getString和等于行为
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 ...)正常工作。 if语句如果使用getString(0).equals或getString(1).equals,但如果我使用getString 3或4 - 应用程序崩溃,则不起作用。如果我使用getColumnIndex(“status”),它也不起作用。等于
已经尝试清理项目,但无法弄清楚这种行为。任何想法为什么发生这种情况?!
UPDATE:
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;
}
我知道数据库的创建工作得很好,因为我有一个完美工作的其他表...
能否请您添加并显示错误消息堆栈跟踪拉分贝? – micha
可你也张贴相关数据库创建的代码和功能getAllTests代码 – nandeesh
上述更新 - 感谢 – cg5572