2012-09-27 51 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)