私は 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;
}
完全に機能している他のテーブルがあるため、データベースの作成が正常に機能することはわかっています...