2012-05-08 9 views
0

私はアンドロイドタブレットにSQLite DBをセットアップして作成する方法に関する電話のチュートリアルに続きました。 DBはjavascriptで書かれ、アプリケーションはHTML5で書かれています。SQLite DBはいつも携帯電話の中に埋め込みます

DBが実際に大きくなりました(データを追加/挿入するだけで1200行のみ) 私の懸念事項の1つは、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ファイルにのみ「リンク」するのに役立ちます:ここで は、コードの一部ですか? 奇妙なことは、DBファイルからデータを取得する他のページも1つありますが、「成功して生成されたDBとテーブル」は得られません。そのページに入ると警告します。

答えて

3

あなたのコードを構造化した方法は、あなたのアプリケーションを起動するたびにpopulateDBメソッドが呼び出されます。 localStorageに値を設定することで、この呼び出しを保護する必要があります。次のようなものがあります。

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

ありがとう、それは働いた:) – TorK

+0

@シモンは、私がアプリを終了したり、電話を再起動しても動作します。上記のイベントが発生した場合でも、localStorageはアイテムを格納しますか? –

+0

@SandeepRaoはい、localStorageはアプリのさまざまな実行と電話機の再起動の間永続的です。 –

0

かなり大きいデータベースでもPhonegapを使用します。私はjQtouchのようなhtml5アプリケーションのフレームワークを見てみることをお勧めします。これは "ネイティブ" iphoneアプリのインタラクションを模倣しています。私の言うところでは、jQtouchを使用すると、index.htmlを一度ロードしてから、javascriptで他のページをロードします。あなたはajaxを使ってコンテンツを読み込み、index.html内のページの構造だけを持つことができます。

ロード時間やメモリリークに問題はありませんでした。ここでjQtouchを見てください。

http://www.jqtouch.com/

幸運!

+0

ヒントありがとうございますが、配信日が近すぎて新しいJ-Libraryから始めることはできません。私はもう一度それを調べるかもしれない。 – TorK