每次在phonegap中填充SQLite DB

时间:2012-05-08 09:06:08

标签: javascript html sqlite cordova

我按照一个关于如何在Android平板电脑上设置和创建SQLite数据库的phonegap教程。 DB是用javascript编写的,应用程序是用HTML5编写的。

数据库最终变得非常大(1200行只有填充/添加数据) 我担心的一个问题是,每当我进入index.html(首页)或我称为catalog.html的页面时,它都会填充。 这是内存或时间等问题吗?应用程序在运行时不会向DB添加任何内容。 有谁知道一种不让它每次都填充的方法? 以下是一些代码:

document.addEventListener("deviceready", onDeviceReady, false);
var db = window.openDatabase("DBfile", "1.0", "Afghanistan", 200000);

function onDeviceReady() {
    db.transaction(populateDB, errorCB, successCB); 
}
function populateDB(tx) {
    (...
    ...
    ...)
}
function errorCB(tx, err) {
    alert("Error processing SQL: "+err.code);
}
function successCB() {
    alert("DB and tables generated with success!");
}

仅仅链接到index.html中的db-file而不是所有其他页面会有帮助吗? 奇怪的是,还有另一个页面从数据库文件中获取数据,但我没有得到“数据库和表生成成功!”当我进入该页面时发出警报。

2 个答案:

答案 0 :(得分:3)

每次启动应用程序时,都会调用populateDB方法构建代码的方式。您将希望通过在localStorage中设置值来保护此调用。类似的东西:

function onDeviceReady() {
    if (localStorage.getItem("firstRun") == null) {
        db.transaction(populateDB, errorCB, successCB);
        localStorage.setItem("firstRun", false);
    }
}

答案 1 :(得分:0)

我使用Phonegap以及相当大的数据库。我建议你看一下html5应用程序的框架,比如jQtouch,它模仿“原生”iphone应用程序上的交互。就我而言,使用jQtouch,您只需加载index.html一次,然后使用javascript加载其他页面。您可以使用ajax加载内容,并且只在index.html中具有页面结构。

我在加载时间或内存泄漏方面没有任何问题。在这里看一下jQtouch。

http://www.jqtouch.com/

祝你好运!