SQLite DB 每次都会在 phonegap 中填充

SQLite DB populates every time in phonegap

本文关键字:phonegap 填充 DB SQLite      更新时间:2023-09-26

我遵循了有关如何在我的Android平板电脑上设置和创建SQLite数据库的phonegap教程。数据库是用javascript编写的,应用程序是用HTML5编写的。

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

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!");
}

仅"链接"索引中的数据库文件.html而不是所有其他页面会有所帮助吗?奇怪的是,还有一个页面从数据库文件中获取数据,但是当我进入该页面时,我没有收到"成功生成数据库和表!"警报。

每次

启动应用程序时都会调用 populateDB 方法构建代码的方式。您需要通过在 localStorage 中设置一个值来保护此调用。像这样:

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

我也在相当大的数据库中使用Phonegap。我建议你看看html5应用程序的框架,如jQtouch,它模仿"原生"iPhone应用程序上的交互。在我看来,使用 jQtouch,你只加载索引.html一次,然后用 javascript 加载其他页面。您可以使用 ajax 加载内容,并且只将页面的结构全部包含在 index.html 中。

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

http://www.jqtouch.com/

祝你好运!