2012-08-25 58 views
0

我正在處理一個有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; 
     } 

我知道數據庫的創建工作得很好,因爲我有一個完美工作的其他表...

+0

能否請您添加並顯示錯誤消息堆棧跟蹤拉分貝? – micha

+0

可你也張貼相關數據庫創建的代碼和功能getAllTests代碼 – nandeesh

+0

上述更新 - 感謝 – cg5572

回答

0

驗證,如果數據庫字段的類型文本。如果是這種情況,請從設備上卸載應用程序並再次運行以強制更新數據庫。 如果您的設備是root用戶,您可以嘗試拔出數據庫。 分貝是/data/data/com.yourapp.name/databases/dbname (如果default),你可以使用"adb pull /data/data/com.yourapp.name/databases/dbname"

+0

你可以得到你的數據庫沒有根。 –

+0

不適用於所有手機。 – IchBinKeinBaum