使用Phonegap中的JSON更新SQL值

时间:2013-11-25 15:18:42

标签: jquery sqlite cordova

我昨天花了整整一天试图调试这个,我无法取得任何进展。情况:我正在使用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.stringify([1,2,3]),此代码将起作用。如果我在数组中使用整数,那么它就可以了,但是如果我使用文本则不然。我尝试将它与单引号和双引号混合,但这也无济于事。我的目标是存储一个看起来像这样的对象数组......

var hole_object = {
    "par": 0,
    "yards": 0,
    "score":0,
    "drives":0,
    "irons": 0,
    "wedges": 0,
    "putts": 0,
    "strokes": 0
};

每次它说“1近”标准“:语法错误”。 stackoverflow上的另一个人问了一个类似的问题,并说使用escape例如...

var string = escape(JSON.stringify(['dag', 'woah']));

但这也没有帮助。因此,我已经尝试了所有我能想到的工作,但没有任何表现。如果必须,我将为每个包含hole_object数组数据的课程创建一个表,但我想看看是否有办法首先完成上述工作。

再次感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

只需使用参数:

tx.executeSql("UPDATE courses SET holes_info = ? WHERE course_id = ?",
              [string, course_id], nullHandler, errorHandler);