Android sqlite缺少列

时间:2011-11-13 20:38:08

标签: android sqlite

我的SQLite数据库缺少一个我知道存在的列。我将无法从Android模拟器中提取数据库,因为无法在没有大量代码重写的情况下使用模拟器填充数据库。

当我向此表添加项目时,

logcat返回sqlite returned: error code = 1, msg = table items has no column named checkedout。下面是表声明,下面是insert函数。我是否在某处拼写错误的拼写?

 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 个答案:

答案 0 :(得分:2)

答案是最后一栏在宣言中没有空格

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

应该是

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

叹息

答案 1 :(得分:1)

抱歉,我似乎无法将此作为评论写下来,所以我把它作为答案:

我假设您使用早期版本的程序创建了表,其中没有“已签出”列。 现在不会重新创建表,因为在查询中包含“IF NOT EXISTS”。

首先尝试删除表格!