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

时间:2017-05-29 16:16:16

标签: 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();
            //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查询时,会显示。

2 个答案:

答案 0 :(得分:0)

取决于您的查询语句。 就像

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

答案 1 :(得分:0)

问题可能是您要添加一个期望NOT NULL

的列

尝试这样的事情:

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

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