我的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);
}
}
答案 0 :(得分:2)
答案是最后一栏在宣言中没有空格
+ KEY_QUANTITY + " TEXT,"
+ KEY_CHECKEDOUT + "INTEGER"
+ ");";
应该是
+ KEY_QUANTITY + " TEXT,"
+ KEY_CHECKEDOUT + " INTEGER"
+ ");";
叹息
答案 1 :(得分:1)
抱歉,我似乎无法将此作为评论写下来,所以我把它作为答案:
我假设您使用早期版本的程序创建了表,其中没有“已签出”列。 现在不会重新创建表,因为在查询中包含“IF NOT EXISTS”。
首先尝试删除表格!