2017-05-29 76 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; 

使用您需要的默認值並根據需要更新值。