昨天我花了一整天的时间试图调试它,但没有取得任何进展。情况:我正在使用Phonegap为iOS平台创建一个应用程序。我正在使用一个带有表格的数据库来存储各种数据(这是一个高尔夫记分卡应用程序)。现在我正试图在课程表中存储一个对象数组,但它返回错误代码"错误:无法准备语句(1接近"blah":语法错误)代码:5"
以下是导致问题的代码。
//for example
var string = JSON.stringify(['dag', 'woah']);
db.transaction(function (tx){
tx.executeSql('UPDATE courses SET holes_info = "' + string + '" WHERE course_id = "' + course_id + '"', [], nullHandler, errorHandler);
});
在我的课程表中,holes_info列被设置为数据类型TEXT。因此,如果我使string=JSON.stringfy([1,2,3]),则此代码确实有效。如果我在数组中使用整数,则它有效,但如果我使用文本,则它无效。我试着把它和单引号和双引号混在一起,但也无济于事。我的目标是存储一个像这样的对象数组。。。
var hole_object = {
"par": 0,
"yards": 0,
"score":0,
"drives":0,
"irons": 0,
"wedges": 0,
"putts": 0,
"strokes": 0
};
每次它说有一个"1接近"par":语法错误"。stackoverflow上的另一个人也提出了类似的问题,并表示例如使用escape。。。
var string = escape(JSON.stringify(['dag', 'woah']));
但这也无济于事。所以我想尽一切办法让它发挥作用,但都无济于事。如果必须的话,我只会为每个课程创建一个表,其中包含hole_object数组数据,但我想看看是否有办法首先实现上述功能。
再次感谢你们的帮助!
只需使用参数:
tx.executeSql("UPDATE courses SET holes_info = ? WHERE course_id = ?",
[string, course_id], nullHandler, errorHandler);