无法在Cordova中的SQLite中保存JSON(GeoJSON)数据

时间:2016-08-15 05:14:15

标签: javascript json cordova

我在下面有这段代码:

var json_data = document.getElementById("json_data").value;
console.log(json_data);

 tx.executeSql('INSERT INTO floodmaps VALUES (?,?,?)', [1, flodMapName, json_data], function(tx, res) {
     //console.log(res);
     console.log("rowsAffected: " + res.rowsAffected + " -- should be 1");
     //console.log(res.rows.item(0).flood_name);
   },
   function(tx, error) {
     console.log('INSERT error: ' + error.message);
   });

 tx.executeSql('SELECT *FROM floodmaps', [], function(tx, res) {
     //console.log(res);
     console.log(res.rows.item(0).id);
     console.log(res.rows.item(0).flood_name);
     console.log(res.rows.item(0).json_data);
   },
   function(tx, error) {
     console.log('error: ' + error.message);
   });

它的作用是从input元素获取值,然后将该值保存到数据库中。但它没有保存,这是调试控制台中的消息:

rowsAffected: 1 -- should be 1
main.js:208 null
main.js:209 null
main.js:210 null
main.js:241 Transaction Successful

但是当我尝试使用像纯文本/单词这样的样本数据时,它确实可以成功保存。可能是什么问题?

这里是data

1 个答案:

答案 0 :(得分:0)

var json_data = document.getElementById("json_data").value;
console.log(json_data);
var str_json_data=JSON.stringify(json_data);  // my edits
 tx.executeSql('INSERT INTO floodmaps VALUES (?,?,?)', [1, flodMapName, str_json_data], function(tx, res) {
     //console.log(res);
     console.log("rowsAffected: " + res.rowsAffected + " -- should be 1");
     //console.log(res.rows.item(0).flood_name);

    if(res.rowsAffected>0){
     tx.executeSql('SELECT * FROM floodmaps', [], function(tx, res) {
     //console.log(res);
       var len = res.rows.length, i;

            for (i = 0; i < len; i++) {
                console.log(res.rows.item(i));
            }
   },
   function(tx, error) {
     console.log('error: ' + error.message);
   });

      }
   },
   function(tx, error) {
     console.log('INSERT error: ' + error.message);
   });
  

您必须在插入

之前对json对象进行字符串化