我刚刚从Node(现在的NW.js)开始,我正在尝试使用Webkit来存储数据。
创建数据库运行良好,与示例完全一样,通常插入数据也很好,就像在示例中一样。但是,当我插入从jsTree创建的JSON对象时,我遇到了麻烦。
JSON对象是使用jsTree方法:get_json('#', { 'flat': false })创建的,然后将其转换为带有JSON.stringify的字符串,但是当我试图将其插入到表中(该表存在并具有正确的字段数等)时,我会遇到一个错误。
目前,我正在使用以下代码:
DBase.transaction(
function(tx){
var v = $("#TheTree").jstree(true).get_json('#', { 'flat': false });
var jsv = JSON.stringify(v);
tx.executeSql(
'INSERT INTO TheTable VALUES(null, "Default", ' + jsv + ')',
[],
function(tx, data){ console.log("Success"); },
function(tx, error){ console.error("FAIL",error); }
);
};
);从JSON.stringify返回时,JSON如下所示:
[{"id": "IDSTring","text": "Welcome String","icon": true,"li_attr": {"id": "tID4392"},"a_attr": {"href": "#","id": "tID4392_anchor"},"state": {"loaded": true,"opened": false,"selected": false,"disabled": false},"data": {},"children": []}]如果我使用相同的代码以及任何其他值来代替变量jsv (例如,任何标准字符串等),就不会出现错误并插入数据,但是JSON会导致以下错误:could not prepare statement (1 unrecognized token: "}") CODE: 5。
JSON在JSON上验证,并且可以在没有问题的情况下加载(解析)回jsTree,所以我认为它只能是导致问题的插入。
在进行了一些搜索之后,Iv尝试将代码更改为:
'INSERT INTO TheTable VALUES(null, "Default", "' + jsv + '")'和
'INSERT INTO TheTable VALUES(null, "Default", [' + jsv + '])'具有非常相似的错误,通常是语法错误或"]“作为未识别的标记,但始终是'Code:5‘。
任何帮助都将受到感激。
问候
最大值
发布于 2015-05-18 04:53:03
您需要转义参数或使用准备好的语句。试试这个:
tx.executeSql('INSERT INTO TheTable VALUES(null, "Default", ?)', [jsv], ...executeSql的第二个参数是一个数组,它包含将用于替换查询中问号的所有值。下面是更多的示例:http://html5doctor.com/introducing-web-sql-databases/
https://stackoverflow.com/questions/30286259
复制相似问题