2012-09-27 30 views
0

我正试图在数据库中存储具有以下json字符串的条目。然而,这似乎是JSON字符串的格式不与DB同意,即使我已阅读文章说,这应该是很容易:phonegap:试图将json存储在数据库中:

我曾尝试:

function Activity() { 
    this.clicks = 100; 
    this.activityTypeCode = 3; 
} 

    var anActivity=new Activity(); 
    var jsonString=JSON.stringify(anActivity); 
    database.transaction(function(tx) { 
     tx.executeSQL('INSERT INTO MYTABLE(ID, DATA) VALUES (100,'+jsonString+')'); 
    }, errorCB, successCB) 

; 

,我得到一个错误,说错误无法识别的令牌“{”。 当我CONSOLE.LOG(jsonString)我得到:

{"clicks":100, "activityTypeCode":3} 

任何援助将不胜感激。

+0

你有使用数据库的特殊原因吗?将数据存储在不那么复杂的情况下可能会更容易,特别是如果数据量不足。 – BlackHatSamurai

+0

对于初学者,你需要在你的sql查询中提供两个值,一个id和你的数据。 – ultranaut

+0

使用更复杂的对象以这种方式存储它。 –

回答

1

首先是确保您的JSON字符串是正确的。你可以在这里验证你的json字符串。

第二次调试是你缺少';'在你的executeSQL中的insert语句中。值数组也缺失。

第三次调试将是您的executeSQL语句。试试这个:

database.transaction(function(tx) 
    { 
     tx.executeSQL('INSERT INTO MYTABLE(ID, DATA) VALUES (?,?);', [100, jsonString],     
     errorCB, successCB); 
    } 

你是否宣布ID为AUTOINCREMENT?您不能将值分配给AUTOINCREMENT列。

希望这会有所帮助。

0

使用参数化查询或引用字符串

database.transaction(function(tx) { 
    tx.executeSQL('INSERT OR REPLACE INTO MYTABLE (ID, DATA) VALUES (100,?)'); 
}, [jsonString], errorCB, successCB)