2012-05-08 20 views
0

我遵循phonegap教程,介紹如何在我的android平板電腦上設置和創建SQLite數據庫。數據庫用JavaScript編寫,應用程序用HTML5編寫。SQLite數據庫每次在手機上填充

數據庫最終變得非常大(1200行只有填充/添加數據) 我的一個擔心是它每次進入我的index.html(frontpage)或我稱爲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!"); 
} 

是否有助於只「鏈接」到數據庫文件中的index.html,而不是所有其他網頁的? 奇怪的是,還有一個其他頁面從數據庫文件中獲取數據,但我沒有得到「DB和成功生成的表格!」當我進入那個頁面時警覺。

回答

3

您每次啓動應用程序時都會調用您的代碼構造populateDB方法的方式。您將需要通過在localStorage中設置值來防止此調用。例如:

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

謝謝,它工作:) – TorK

+0

@Simon即使我退出應用程序或重新啓動手機它將工作。我的意思是即使發生了任何提及的事件,localStorage也會存儲該項目? –

+0

@SandeepRao yes,localStorage在應用程序的不同運行過程中保持不變,並重新啓動手機。 –

0

我使用Phonegap以及相當大的數據庫。我建議你看看html5應用程序的框架,例如jQtouch,它模仿了「本地」iPhone應用程序上的交互。就我而言,使用jQtouch,你只需加載一次你的index.html,然後用javascript加載其他頁面。您可以使用ajax加載內容,並且只有index.html中的頁面結構。

我沒有任何加載時間或內存泄漏問題。在這裏看看jQtouch。

http://www.jqtouch.com/

祝你好運!

+0

謝謝你的提示,但deliverydate太接近開始新的J-library。我可能會再看一次。 – TorK