2017-05-29 26 views
0

我正在将新列添加到现有表中,并向表中添加新条目,并且仅在新列中存在有效数据(其他列默认为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查询时,它显示出来。

+0

DB_ADD_COLUMN_STATEMENT_TABLE_SHOP_NAME中的“+”D“+”怎么样?这是故意还是错误? – Ale

+0

这是有意的,我只是前缀D的时间,因为sqlite不接受列名开头 – banguru

回答

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

我只是查询表中的所有条目。 – banguru

+0

在查询之前,您是否在该列中保存了任何值? – Ale

+0

是的,它被保存,如果我转储数据库我可以看到该值 – banguru

0

问题可能是您添加的预计NOT NULL

尝试是这样的一列:

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

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

相关问题