Google API Android 2.3.1,数据库表格中的数据更改未反映在tableview屏幕中,但如果我们重新启动应用程序,则会显示更改,如果我们加载app.js则会显示最近的更改。
任何人都可以帮我解决这个问题吗?
fireEvent("db_update")
&安培;
addEventListener('db_update',function(){应该在这里更新表数据}}
答案 0 :(得分:0)
要更新数据库,首先需要将其删除,然后再安装新数据库。或运行查询以更新当前的查询。
这是我根据属性中存储的版本号更新数据库的方式:
function updateDatabase(version){
if (version != Ti.App.Properties.getInt('version',0)){
sb.db.remove();
sb.db = Ti.Database.install('/lib/db.sqlite','db');
Ti.App.Properties.setInt('version',version);
}
}
在应用程序中,在启动时,我运行带有手动键入版本号的函数。每次数据库更改时,您都可以手动更改此编号。
updateDatabase(5);
这当然不反映关于表格内容的定期更新。 (当您对数据库运行常规查询时)。
在这种情况下,您应该自己重建tableview的内容(您有代码填充tableview,重新运行该代码)或找到一种方法来定位您需要使用ID更改的确切行。
答案 1 :(得分:0)
我找到了解决方案,
Ti.App.addEventListener('updatedb', updateData);
这里'updateData'是从数据库获取tableview数据的函数。在 “updateData”函数的底部,为表视图设置数据
i.e) tableview.setData(data);
然后,您的插入,更新或删除功能应触发'updatedb'功能
即)
function deleteData(recId) {
var db = Ti.Database.open(DBNAME);
db.execute(" DELETE FROM tblName WHERE id IN("+ recId+") ");
db.close();
Ti.App.fireEvent('dataupdated');
}
现在,在调用deleteData函数后,你的tableview数据将显示没有删除的记录。