2011-11-13 56 views
0

我的SQLite數據庫缺少一個我知道存在的列。我將無法從Android模擬器中獲取數據庫,因爲沒有大量代碼重寫的情況下無法使用模擬器填充數據庫。Android sqlite缺失列

logcat返回sqlite returned: error code = 1, msg = table items has no column named checkedout當我添加一個項目到這個表。下面是表格聲明,下面是插入函數。我是否在某處拼寫檢出不一致?

static final String CREATE_ITEM_TABLE ="create table if not exists "+CHECKOUT_TABLE+" (" 
     + KEY_ROWID + " INTEGER PRIMARY KEY," 
     + KEY_STORE +" TEXT," 
     + KEY_INVID + " TEXT," 
     + KEY_PRODUCT + " TEXT," 
     + KEY_PRICE + " TEXT," 
     + KEY_WEIGHT + " TEXT," 
     + KEY_CATEGORY + " TEXT," 
     + KEY_QUANTITY + " TEXT," 
     + KEY_CHECKEDOUT + "INTEGER" 
     + ");"; 



//store item 
public long storeNewItem(String store, String invid, String product, 
     String price, String weight, String category, String quantity, int checkedout) { 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_STORE, store); 
    initialValues.put(KEY_INVID, invid); 
    initialValues.put(KEY_PRODUCT, product); 
    initialValues.put(KEY_WEIGHT, price); 
    initialValues.put(KEY_CATEGORY, weight); 
    initialValues.put(KEY_QUANTITY, quantity); 
    initialValues.put(KEY_CHECKEDOUT, checkedout); //just in case I want to store these items, but server should know 

    if(checkedout==0) 
    { 
     return sqlDb.insert(CHECKOUT_TABLE, null, initialValues); 
    } 
    else //if checkedout==true 
    { 
     return sqlDb.insert(PAST_ITEM_TABLE, null, initialValues); 
    } 

} 
+2

是CHECKOUT_TABLE和PAST_ITEM_TABLE真的定義一樣嗎? –

+0

是的。 checkout_table將經常清除並刪除。 past_item_table將會增長很多,直到達到其他限制時纔會被清除 – CQM

+0

在DDMS透視圖中打開文件資源管理器選項卡找到您的數據庫,拉上光盤並檢入例如SQLite Browser數據庫結構 – Mike

回答

2

的答案是,最後一列沒有在聲明中

+ KEY_QUANTITY + " TEXT," + KEY_CHECKEDOUT + "INTEGER" + ");";

應該已經

+ KEY_QUANTITY + " TEXT," + KEY_CHECKEDOUT + " INTEGER" + ");";

嘆空間

1

對不起,我似乎不能夠寫這個作爲一個評論,所以我把它放下作爲一個答案:

我假設你有你的程序的早期版本創建的表,那裏沒有「簽出」欄。 現在表格不會被重新創建,因爲您的查詢中包含「IF NOT EXISTS」。

嘗試先移去表!

+0

答案張貼空格。我找到了 – CQM