我用我的Titanium Application创建了一个SQLite数据库。当我在我的应用程序(钛合金)中使用它时它很顺利。
接下来,当我使用SQLite管理器将新字段插入到我的表中时,在使用较新版本更新我的应用程序后,新添加的字段数据不会出现在App中。这个问题只发生在我的Android设备上,在IOS中,它运行良好。
我应该如何为Android钛做什么,这样当我更新一个应用程序时,它还将通过从数据库中获取新添加的字段来更新SQlite数据库?如果我卸载当前的应用程序并再次安装应用程序,那么它将正常工作但我不想卸载应用程序。我只是想更新一个应用程序。请评论您的建议
答案 0 :(得分:1)
Android更新应用程序SQLite数据库不会覆盖。它将使用旧的SQLiteDB,如果在数据库应用程序中添加任何新字段将从旧的SQLiteDB中获取。
要解决此问题:
db.execute('PRAGMA user_version = 1');
db.execute('PRAGMA user_version = 2');
db.execute('PRAGMA user_version');
另一种方式: 复制DB和重命名DB将它放在代码中的相同位置使用新的DB名称。 Ti.Database.open(' newDBName&#39)。这不是一个好方法。
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变量。