添加到表中的新列不显示在查询中
问题描述:
我正在将新列添加到现有表中,并向表中添加新条目,并且仅在新列中存在有效数据(其他列默认为0)添加到表中的新列不显示在查询中
添加列:
final String DB_ADD_COLUMN_STATEMENT_TABLE_SHOP_NAME =
"ALTER TABLE "+ shopName + " ADD COLUMN "+ "D" + time + " FLOAT";
try {
mDB.beginTransaction();
//SQLiteStatement statement = mDB.compileStatement(DB_ADD_COLUMN_STATEMENT_TABLE_SHOP_NAME);
//statement.execute();
mDB.execSQL(DB_ADD_COLUMN_STATEMENT_TABLE_SHOP_NAME);
mDB.setTransactionSuccessful();
}
catch (Exception e) {
Log.d(LOG_TAG,"addItemSample : Exception while adding column to table!!");
}
finally {
mDB.endTransaction();
}
添加新条目表中的数据仅在此列成功。
但是,当我查询表中,这个新的列不会出现在游标中。
虽然添加列和查询发生在不同的线程中,但它们是从我们的代码中被调用的方式序列化的(即第一列被添加,然后db被查询)以及我使用单个连接来D b。
我想知道这可能是什么原因?
PS:当插入列后立即执行db查询时,它显示出来。
答
取决于您的查询语句。 是不是像
String query="select id, column1, column 2 from "+shopName+" where yourcondition";
? 可能是你必须添加列吗?
String query="select id, column1, column2, D192200 from "+shopName+"";
,或者您可以查询所有列
String query="select * from "+shopName+"";
答
问题可能是您添加的预计NOT NULL
值
尝试是这样的一列:
ALTER TABLE "+ shopName + " ADD COLUMN "+ "D" + time + " FLOAT" default 0 NOT NULL;
使用您需要的默认值并根据需要更新值。
DB_ADD_COLUMN_STATEMENT_TABLE_SHOP_NAME中的“+”D“+”怎么样?这是故意还是错误? – Ale
这是有意的,我只是前缀D的时间,因为sqlite不接受列名开头 – banguru