Javascript 如何将JS对象添加到Sqlite数据库中

Javascript 如何将JS对象添加到Sqlite数据库中,javascript,json,sqlite,cordova,Javascript,Json,Sqlite,Cordova,我在尝试将JS对象添加到sqlite数据库时遇到问题。我正在使用cordova,为android、windows和iOS创建一个应用程序 我有这个代码用于插入和检索 var data = localStorage.getItem('folderData'); console.log(data); var username = localStorage.getItem("username"); var session = localStorage.getItem("session_ID"); tx

我在尝试将JS对象添加到sqlite数据库时遇到问题。我正在使用cordova,为android、windows和iOS创建一个应用程序

我有这个代码用于插入和检索

var data = localStorage.getItem('folderData');
console.log(data);
var username = localStorage.getItem("username");
var session = localStorage.getItem("session_ID");
tx.executeSql('CREATE TABLE IF NOT EXISTS folderData (id integer primary key autoincrement, username, sessionID, folderData text)');
tx.executeSql('SELECT * FROM folderData WHERE username = "'+username+'"', [], function(tx, result) {
    if(result.rows.length > 0){
        tx.executeSql('UPDATE folderData SET folderData = "'+data+'", sessionID = "'+session+'" WHERE username = "'+username+'"');
        alert('An update has occured folderData');
    } else {
        tx.executeSql('INSERT INTO folderData (username, sessionID, folderData) VALUES ("'+username+'", "'+session+'", "'+data+'")');
        alert('An insert has occured folderData');
    }
});
tx.executeSql('SELECT folderData FROM folderData WHERE username = "'+username+'" AND sessionID = "'+session+'" ORDER BY id desc LIMIT 1', [], function(tx, result) {
    querySuccessFolderData(tx, result);
});
数据变量是我的对象。当我在插入前输入console.log(数据)时,我得到以下信息

这是my
querySuccessFolderData
函数

function querySuccessFolderData(tx, results) {
    var len = results.rows.length;
    //alert("folderData table: " + len + " rows found.");
    var newFolderData = jsonParse(results.rows.item(0).folderData);
    for(i=0;i<len;i++)
    {
        var newFolderData = results.rows.item(i).folderData;
    }
    console.log(newFolderData);
}
函数querySuccessFolderData(发送,结果){
var len=results.rows.length;
//警报(“folderData表:“+len+”找到行”);
var newFolderData=jsonParse(results.rows.item(0.folderData));

for(i=0;i设法解决了我的问题

设置我的本地存储数据

localStorage.setItem("folderData", JSON.stringify(data['root']));
使用getItem在另一个函数中检索它,并为数据库插入对其进行编码

var data = localStorage.getItem('folderData');
data = encodeURI(data);
然后使用decodedURI和jsonParse将其转换回一个对象

var newFolderData = results.rows.item(0).folderData;
newFolderData = decodeURI(newFolderData);
newFolderData = jsonParse(newFolderData);

这给了我保存的正确数据。

您正在使用
data=jsonParse(data);
并将其插入数据库。然后,在读取时,您正在执行
jsonParse(results.rows.item(0.folderData)
。没有“JSON对象”这样的事情有一个JS对象或一个JSON字符串。您需要将JSON字符串作为一个JSON字符串插入数据库,然后在读取时,将该JSON字符串解析为一个JS对象。感谢您的澄清。我编辑了我的问题以反映这一点。我在插入之前删除了jsonParse(数据),但在检索数据时,它显示为[Object Object]还有。有什么想法吗?你可能想看看我发现它在简化本地存储操作方面真的很棒。对于你正在做的事情来说,这可能有点过头了,但它为我节省了很多时间。