Android 添加到表中的新列不会显示在查询中

Android 添加到表中的新列不会显示在查询中,android,android-sqlite,android-database,Android,Android Sqlite,Android Database,我正在向现有表中添加一个新列,并向该表中添加一个新条目,其中有效数据仅存在于新列中(其他列默认为0) 添加列: final String DB_ADD_COLUMN_STATEMENT_TABLE_SHOP_NAME = "ALTER TABLE "+ shopName + " ADD COLUMN "+ "D" + time + " FLOAT"; try { mDB.beginTransaction();

我正在向现有表中添加一个新列,并向该表中添加一个新条目,其中有效数据仅存在于新列中(其他列默认为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),而且我使用的是到db的单个连接

我想知道这可能是什么原因


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+"";

问题可能是您正在添加一列,该列要求
不为NULL

试着这样做:

ALTER TABLE "+ shopName + " ADD COLUMN  "+ "D" + time + " FLOAT" default 0 NOT NULL;

使用您需要的默认值,并根据需要更新值。

我只是查询表中的所有条目。在查询之前,您是否在该列中保存了任何值?是的,它已保存,如果我转储数据库,我可以看到该值。db\u ADD\u column\u STATEMENT\u table\u SHOP\u NAME中的“+”D“+”呢?这是故意的还是错误的?这是故意的,我只是在time前面加上前缀D,因为sqlite不接受以数字开头的列名