2016-04-16 7 views
0

Cordova Storage APIを使用してPhonegapアプリにデータを保持しようとしています。 しかし、私はそれを殺した後にアプリを開いたときに、それは2 rows foundを返します。Phonegap iOSプラットフォームでアプリを終了すると、ストレージとデータベースのデータが失われる

私が使用しています:

  • コルドバ:5.2.0
  • コルドバのiOSプラットフォーム3.9.2
  • のXCode:7.0.1
  • iOSシミュレータ9.0

はありますがコード内に何か誤りがあります:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Storage Example</title> 
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script> 
    <script type="text/javascript" charset="utf-8"> 

    // Wait for Cordova to load 
    // 
    document.addEventListener("deviceready", onDeviceReady, false); 

    // Populate the database 
    // 
    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) { 
     var len = results.rows.length; 
     alert("DEMO table: " + len + " rows found."); 

    } 

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

    // Transaction success callback 
    // 
    function successCB() { 
     var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000); 
     db.transaction(queryDB, errorCB); 
    } 

    // PhoneGap is ready 
    // 
    function onDeviceReady() { 
     var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000); 
     db.transaction(populateDB, errorCB, successCB); 
    } 

    </script> 
    </head> 
    <body> 
    <h1>Example</h1> 
    <p>Database</p> 
    </body> 
</html> 
+0

ご質問はありますか?あなたは何をしたいのですか? –

+0

なぜデータベースに行が残っていないのですか?コードワインでアプリを強制終了した後でもデータを保存するにはどうすればいいですか?それは、毎時のイベントに追加し続けるべきです。 – Avijit

答えて

0

あなたが失われたデータにはしたくない場合は、行削除:アプリを初期化するとき、これはすべてのデータを削除するので

tx.executeSql('DROP TABLE IF EXISTS DEMO'); 

を。

+0

ありがとう@ジョーズ。テーブルのdefinationからの 'unique'制約も削除する必要があります。 – Avijit

関連する問題