2012-08-01 73 views
0

我正在研究一些從數據庫中獲取名稱和編號並顯示它的代碼。該代碼適用於運行1.6的仿真器,但不適用於運行4.1.1的Galaxy Nexus。光標與Jellybean不一樣?

每當我在設備上調用viewEntries()時,我的app force關閉,並給出IllegalStateException,表示無法找到該列。 WhitelistDB從SQLiteOpenHelper擴展。

謝謝你的幫助。

public String getData() 
{ 
    WhitelistDB DB = new WhitelistDB(this); 
    SQLiteDatabase db = DB.getReadableDatabase(); 

    String[] columns = new String[]{WhitelistDB.KEY_ID, WhitelistDB.KEY_NAME, WhitelistDB.KEY_NUMBER}; 
    Cursor c = db.query(WhitelistDB.TABLE_NAME, columns, null, null, null, null, null); 
    String result = ""; 

    int count = c.getColumnCount(); 
    String noEntries = "No entries in whitelist."; 

    if(count < 1) 
    { 
     return noEntries; 
    } 

    int iRow = c.getColumnIndex(WhitelistDB.KEY_ID); 
    int iName = c.getColumnIndex(WhitelistDB.KEY_NAME); 
    int iNumber = c.getColumnIndex(WhitelistDB.KEY_NUMBER); 

    for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) 
    { 
     result = result + c.getString(iRow) + " " + c.getString(iName) + " " + c.getString(iNumber) + "\n"; 
    } 

    db.close(); 

    return result; 
} 

public void viewEntries() 
{ 
    TextView tv = (TextView) findViewById(R.id.wlData); 
    String info = getData(); 
    tv.setText(info); 
} 

這是我得到的錯誤。

07-31 18:42:10.706: E/CursorWindow(10024): Failed to read row 0, column -1 from a CursorWindow which has 7 rows, 3 columns. 
07-31 18:42:10.706: D/AndroidRuntime(10024): Shutting down VM 
07-31 18:42:10.706: W/dalvikvm(10024): threadid=1: thread exiting with uncaught exception (group=0x41dbe300) 
07-31 18:42:10.714: E/AndroidRuntime(10024): FATAL EXCEPTION: main 
07-31 18:42:10.714: E/AndroidRuntime(10024): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mutoor.autoreply/com.mutoor.autoreply.WhitelistActivity}: java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it. 
07-31 18:42:10.714: E/AndroidRuntime(10024): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
+0

請發佈stacktrace也是如此。 – 2012-08-01 02:14:06

+1

您是否嘗試過在您的Nexus上完全卸載應用程序?一個數據庫只創建一次,所以如果你打開了該表的以前版本的數據庫,它將不會有任何新添加的列。 – Bobbake4 2012-08-01 02:53:40

+0

變成這就是我需要做的一切。我想在重新啓動數據庫時刪除了數據庫目錄。謝謝! – BigFerdes 2012-08-01 02:59:11

回答

0

嘗試用清除先前安裝的數據:

設置 - >應用 - >[應用程序名稱] - >清除數據