javascriptでsqliteを使用してキャッシュを実装しようとしています。文字列にキャストしてデータベースに入力しようとしているjsonオブジェクトがありますが、構文エラーが発生し続けます。
テーブルは、md5文字列とjson文字列の2つのフィールドで構成されています。ここでは、dbとテーブルを定義する方法を説明します。
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文字列の引用符と関係があると思っていましたが、フィールドタイプは単なるテキストであるため、構文エラーが何であるかはわかりません。
何か案は?