我正在尝试在 javascript 中使用 sqlite 实现缓存。我有一个 json 对象,我试图将其转换为字符串并输入到数据库中,但不断收到语法错误。
该表由两个字段组成,一个 md5 字符串和一个 json 字符串,这是我定义数据库和表的方式
db = window.openDatabase("Database", "1.0", "Cordova Demo",10485760);
db.transaction(function(tx){
tx.executeSql('DROP TABLE IF EXISTS CACHE_DATA');
tx.executeSql('CREATE TABLE IF NOT EXISTS CACHE_DATA (md5 TEXT UNIQUE, data TEXT)');
},function(tx,error){
console.log('tx error: ' + error);
},function(){
console.log('tx success');
});
这就是我尝试输入变量 d.data 是 json 对象的数据的方式。
var jsonString = JSON.stringify(d.data, null, '');
db.transaction(function(tx){
tx.executeSql('INSERT OR REPLACE INTO CACHE_DATA (md5, data) VALUES ("'+hash+'", "'+jsonString+'")');
},function(tx,error){
console.log(JSON.stringify(tx.message));
console.log(JSON.stringify(error));
},function(){
console.log('tx success');
});
console.log(jsonString);
哪个会抛出错误
08-27 23:19:55.702: E/SQLiteLog(29831): (1) near "networks": syntax error
我要输入的实际字符串如下所示
08-27 23:19:55.652: D/CordovaLog(29831): {"networks":[{"id":"66","name":"Test"}],"expires":1346138396}
我在想它与 json 字符串中的引号有关,但字段类型只是文本,所以我不确定语法错误可能是什么。
有任何想法吗?