1

私はphonegap androidアプリケーションが初めてです。(私の下手な英語で申し訳ありません。)

ユーザーの詳細を入力するための検索ページを持つ単純なアプリを作成したいと考えています。ユーザーの関係の詳細を取得するために Web サービスを使用しています。フィールドで、データベースからある種の静的コードを検索したい。検索プロセスが高速になるように、サーバーではなくローカルデータベースに保存することにしました。データベースの作成に問題があります。アプリのインストール時のみワンタイムデータベースを作成したい。次のコードを使用しました。

document.addEventListener("deviceready", onDeviceReady, false);
        function onDeviceReady() {
            var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
            db.transaction(populateDB, errorCB, successCB);
        }
        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")');
        }

        // Query the database

        function queryDB(tx) {
            tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
        }

        // Query the success callback

        function querySuccess(tx, results) {
            // console.log("Returned rows = " + results.rows.length);
            var len = results.rows.length;
            console.log("DEMO table: " + len + " rows found.");
            for (var i=0; i<len; i++){
                console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);
            }
            // this will be true since it was a select statement and so rowsAffected was 0
            if (!results.rowsAffected) {
                console.log('No rows affected!');
                return false;
            }
        }

        // Transaction error callback
        function errorCB(err) {
            console.log("Error processing SQL: "+err.code);
        }

        // Transaction success callback

        function successCB() {
            var db = window.openDatabase("Database", "1.0", "Cordova Demo", 200000);
            db.transaction(queryDB, errorCB);
        }

すべてのデータはサーバー上の mySQL データベースにあります。デバイスにインストールするときに、アプリのローカル データベースのデモ テーブルにそれらを保存したいと考えています。

私は次の問題を抱えています-

  1. データベースがデバイスで実行されるたびに、デモ テーブルの行が上書きされます。
  2. デモ テーブルには、mysql データベースに約 15000 行あります。私はmysqlデータベーステーブルのバックアップを取ることができますが、アプリデータベースでそれを復元する方法.
  3. インストール時にすべてのデータを保存する Web サービスを呼び出すことはできますか?
  4. localStorage を使用している場合も同じ質問です。
4

1 に答える 1

1

sqllite またはローカル ストレージを使用します... http://www.sqlite.org/

于 2013-07-23T12:20:43.017 に答える