在Phonegap中用JSON更新SQL值



昨天我花了一整天的时间试图调试它,但没有取得任何进展。情况:我正在使用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);

最新更新