不寻常的android getString和equals行为

时间:2012-08-25 17:33:56

标签: android equals getstring

我正在使用包含4列(_id,name,scores,status)的数据库,并使用以下命令将所有行导入到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”),它也将无法工作.qualals

尝试过清理项目,但无法弄清楚这种行为。任何想法为什么会发生这种情况?!

更新

1)getAllTests如下(还尝试了rawQuery SELECT * FROM ... etc

    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;
      }

我知道数据库创建工作正常,因为我有其他正常工作的表...

1 个答案:

答案 0 :(得分:0)

验证数据库字段是否为文本类型。从设备卸载应用程序并再次运行以强制更新数据库(如果是这种情况)。 如果您的设备是root用户,您可以尝试拔出数据库。 default上的数据库是{/data/data/com.yourapp.name/databases/dbname} 您可以使用"adb pull /data/data/com.yourapp.name/databases/dbname"

拉取数据库