0

Google APIs Android 2.3.1 ,数据库表中的数据更改不会反映在 tableview 屏幕中,但是如果我们重新启动应用程序,将显示更改,并且如果我们加载 app.js 将显示最近的更改。

谁能帮我解决这个问题??

fireEvent("db_update") 

&
addEventListener('db_update', function() {这里应该更新表数据})

4

2 回答 2

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 更改的确切行。

于 2012-09-06T14:58:36.750 回答
0

我找到了解决方案,

Ti.App.addEventListener('updatedb', updateData);

这里的'updateData'是从数据库中获取tableview数据的函数。在“updateData”函数的底部,为表格视图设置数据

i.e)   tableview.setData(data);

然后,您的插入、更新或删除功能应该触发“updatedb”功能

IE)

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 数据将显示没有删除的记录。

于 2012-09-09T06:26:21.220 回答