Bri*_*ian 5 javascript sqlite json cordova
我正在尝试在javascript中使用sqlite实现缓存.我有一个json对象,我正在尝试将其转换为字符串并输入到数据库中,但不断出现语法错误.
该表由两个字段组成,一个是md5字符串,另一个是json字符串,这是我如何定义db和table的
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');
});
Run Code Online (Sandbox Code Playgroud)
这就是我试图输入变量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);
Run Code Online (Sandbox Code Playgroud)
哪个会抛出错误
08-27 23:19:55.702: E/SQLiteLog(29831): (1) near "networks": syntax error
Run Code Online (Sandbox Code Playgroud)
我输入的实际字符串看起来像这样
08-27 23:19:55.652: D/CordovaLog(29831): {"networks":[{"id":"66","name":"Test"}],"expires":1346138396}
Run Code Online (Sandbox Code Playgroud)
我认为它与json字符串中的引号有关,但字段类型只是文本,所以我不确定语法错误是什么.
有任何想法吗?
我想出了转换成字符串后需要转义的JSON字符串
var jsonString = escape(JSON.stringify(d.data));
db.transaction(function(tx){
tx.executeSql('INSERT OR REPLACE INTO CACHE_DATA (md5, json, expires) VALUES ("'+hash+'", "'+jsonString+'","'+expireStamp+'")');
},function(tx,error){
console.log(JSON.stringify(tx.message));
console.log(JSON.stringify(error));
},function(){
});
Run Code Online (Sandbox Code Playgroud)
您是否尝试过将它们作为数组传递:
var valuesInArray = [hash, JSON.stringify(d.data, null, "");
tx.executeSql("INSERT OR REPLACE INTO CACHE_DATA (md5, data) VALUES (?, ?)", valuesInArray, function(tx, result) {
// Success Callback
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7801 次 |
最近记录: |