2016-03-06 49 views
0

我已經使用我的Titanium應用程序創建了SQLite數據庫。當我在我的應用程序(鈦合金)中使用它時,情況良好。更新我的鈦android應用程序後,我的android設備沒有獲得新添加的表格數據數據

接下來,當我用SQLite管理器向我的表中插入一個新字段時,新版本添加的字段數據在更新我的應用程序後不會出現在App中。這個問題只發生在我的android設備上,在IOS中,它運行良好。

我應該怎麼做android鈦,以便當我更新一個應用程序時,它也將更新SQlite數據庫通過提取新添加的數據庫字段?如果我卸載當前的應用程序並再次安裝應用程序,那麼它會正常工作,但我不想卸載應用程序。我只想更新一個應用程序。請評論你的建議

回答

1

Android而更新應用程序SQLite數據庫不會覆蓋。它將使用舊的SQLiteDB,如果您在數據庫應用程序中添加任何新的字段將從舊的SQLiteDB中獲取。

要解決此問題:

  • 使用SQLite數據庫版本。如果數據庫版本是新的,意味着需要在運行時更改表。
  • 第一個版本: db.execute('PRAGMA user_version = 1');
  • 第二個版本: db.execute('PRAGMA user_version = 2');
  • 檢查版本訪問表之前: db.execute('PRAGMA user_version');

另一種方式: 複製DB和重命名DB的地方就在代碼中使用同一個地方新的數據庫名稱。 Ti.Database.open( 'newDBName')。這不是一個好方法。

var checkDBVersion = function() { 
var db = Ti.Database.open(DATABASE_NAME); 
var rows = db.execute('PRAGMA user_version'); 
var dbVersion = 0; 
if (rows.isValidRow()) { 
    dbVersion = rows.fieldByName('user_version'); 
} 
db.close(); 
return dbVersion;}; 

聲明你的當前版本的數據庫與var DBVersion = 2

if(DBVersion!=checkDBVersion()){ //Write your alter query for Table } 

每當應用程序的進一步釋放你的應用程序數據庫的更改需要更新您的DBVersion變量。

+0

嗨Venkatesh,我如何檢查鈦代碼關於當前的數據庫版本的SQLite和基於該ALTER表?? ??如果可能,你可以提供一些代碼行。 ?謝謝 –

+0

編輯我的答案。請檢查這可能對你有用。 – Venkatesh

相關問題