2012-09-27 2 views
0

다음 json String과 함께 항목을 데이터베이스에 저장하려고합니다.phonegap : 데이터베이스에 json을 저장하려고합니다 :

나는 시도했다 : 그러나,이 JSON 문자열의 형식처럼 보인다 내가 글이 용이해야 말을 읽고에도 DB에 동의하지 않는

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) 

; 

을 나는 오류가 발생하는 오류를 인식 할 수없는 토큰 "{". 나는 (jsonString를) CONSOLE.LOG 않을 때 내가 얻을 :

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

모든 지원

주시면 감사하겠습니다.

+0

db를 사용하는 특별한 이유가 있습니까? 덜 복잡한 데이터에 데이터를 저장하는 것이 더 쉬울 수 있습니다 (특히 많은 데이터가없는 경우). – 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); 
    } 

당신은 AUTOINCREMENT로 ID를 선언 했습니까? AUTOINCREMENT 컬럼에 값을 할당 할 수 없습니다.

희망이 도움이됩니다.!

0

를 사용하여 매개 변수화 된 쿼리 또는 인용 된 문자열

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