仅在安装时在phonegap android app中创建数据库

时间:2013-07-23 12:10:06

标签: android html5 jquery-mobile cordova local-storage

我是phonegap android应用程序的新手。 (抱歉我的英语不好。)

我想创建一个简单的应用程序,其中包含用于填充用户详细信息的搜索页面。我正在使用Web服务来获取用户的关系详细信息。在一个字段上,我想从数据库中搜索某种类型的静态代码。我们决定将它们存储在本地数据库而不是服务器中,这样搜索过程就会很快。我在创建数据库时遇到了一些问题。我想只在app安装时创建一个时间数据库。 我使用了以下代码。

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数据库表备份,但如何在app数据库中恢复它。
  3. 我可以调用Web服务来存储安装时间的所有数据。
  4. 同样的问题,如果我正在使用localStorage。

1 个答案:

答案 0 :(得分:1)

使用sqlite或本地存储... http://www.sqlite.org/