我正在使用SQLite for mobile,主要用于混合移动应用程序开发。
我将数据存储在一列中,就像这样。
var QueryToInsert = JSON.stringify(object) // where object is defined as below
INSERT OR REPLACE INTO Table (id,data) VALUES ('1', " ' " + QueryToInsert + " ' " );
变为
INSERT OR REPLACE INTO Table (id,data) VALUES ('1','[{"name":"Romeo","lastName":"Juliet"}]')
虽然这有效,但如果我有这样的对象:
var object = {"name": "In connection with this appellative of 'Whalebone Whales' , it is of great..." }
注意字符串中的'' 。
如果我这样做。
INSERT OR REPLACE INTO Table (id,data) VALUES ('1', " ' " + JSON.stringify(object) + " ' " );
它给了我一个错误:
{"code":5,"message":"near \"Whalebone\": syntax error"}
解决方案我尝试过:
在进行查询之前,将所有'
替换为某些字符。它确实有效,但是当有大量数据和大量表时,将所有'
替换为一个缓慢的过程。
我正在寻找可以帮助我的任何解决方案。
答案 0 :(得分:1)
在SQL中,字符串中的单引号必须通过加倍来转义:
INSERT ... VALUES ('... of ''Whalebone Whales'' ...');
但是,通过使用参数来避免格式化这样的问题要容易得多:
tx.executeSql("INSERT OR REPLACE INTO Table (id,data) VALUES (?, ?);",
['1', JSON.stringify(object)],
onSuccess, onError);