0

そこで、このページのガイドラインを使用して、電話ギャップ プロジェクトで SQLite DB を作成しました: http://docs.phonegap.com/en/1.5.0/phonegap_storage_storage.md.html#Storage

DB にデータを入力する関数について 1 つだけ質問があります。

    function populateDB(tx) {
      tx.executeSql('DROP TABLE IF EXISTS DEMO');
      tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
      tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
      tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
  }

この関数の先頭でテーブル DEMO を削除し、アプリケーションを実行するたびに DEMO を作成します。これは、上記の文でテーブルが削除されるとテーブルが削除されるため、新しいテーブルを作成して毎回埋めることを意味します?!?

アプリケーションが開かれるたびにデータを削除および追加する意味は何ですか?これは、デバイスに不要な作業を作成するだけではありませんか? 「DROP TABLE IF EXISTS DEMO」を削除して、「DROP TABLE IF EXISTS DEMO」のみを使用することはできませんか?

一番上で「テーブルを削除」しないと、毎回レプリケートされたデータが追加されるということですか? テーブルが既に存在する場合は、if文または何かが必要ですか?

4

2 に答える 2

2

これは単なる例であり、賢いことや論理的なことを行うことを意図したものではありません。準備なしで実行できるはずであり、それが機能します。

于 2012-04-05T11:57:23.960 に答える
0

いつも同じようなものを使っています。開発中に、指定したコードを使用して、ユーザーを最初からテストできます。次に、戻ってきたユーザーをテストする準備ができたら、次のように 2 行目をコメントアウトします。

function populateDB(tx) {
    //tx.executeSql('DROP TABLE IF EXISTS DEMO');   // Uncomment to test from scratch, comment for production!
    tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}

行を削除することはありません。// を削除または挿入するだけで、2 つのテスト モードをすばやく切り替えることができます。本番環境では、コメント アウトされた行を残しますが、必要に応じて削除することもできます。

于 2012-12-24T23:27:14.583 に答える