2016-09-18 76 views
0

我沒有看到我的代碼發生了什麼。我不知道爲什麼我在語句中得到'?'的字符串不符合爭議計數,而我沒有使用'?'插入值。這裏是我的代碼:Phonegap SQLite錯誤處理5:'?'的數量不匹配

db = window.openDatabase("myDB", "1.0", "Test DB", 2000000); 
     db.transaction(populateDB, errorCB, successCB); 

      $.ajax({ 

      type: 'POST', 
      url: "MY_SERVER_URL", 
      data: {"email": email, "password": password}, 
      success: function (response) { 
        db.transaction(function (tx) { saveDetailsInDB(tx, JSON.stringify(response)) } ,errorCB , successInsertion); 

      }, 
      error: function (errorMessage) { 
       window.alert("Something went wrong!"); 

      } 

     }); 


     } 
    } 

function populateDB(tx) { 
      tx.executeSql('DROP TABLE IF EXISTS UserDetailsInJSONform'); 
      tx.executeSql('CREATE TABLE IF NOT EXISTS UserDetailsInJSONform (ID INTEGER, JSONdetails TEXT)'); 
      tx.executeSql('INSERT INTO UserDetailsInJSONform (ID,JSONdetails) VALUES (1,"asd")'); 
} 


function saveDetailsInDB(tx, response){ 
    tx.executeSql('INSERT INTO UserDetailsInJSONform (ID,JSONdetails) VALUES (1,"asd")',done,errorCB); 
} 


function done(tx) { 
    alert("success "); 
    tx.executeSql('SELECT * FROM UserDetailsInJSONform', [], querySuccess, errorCB); 
} 


// Transaction error callback 
function errorCB(err) { 
    alert("Error processing SQL: "+err.code+" "+err.message); 
} 


// Transaction success callback 
function successCB() { 
    alert("Positive successCB"); 
} 


function successInsertion() { 
    alert("Positive successInsertion"); 
} 


function querySuccess(tx,results){ 
     var len = results.rows.length; 
     alert("Row no. "+len); 

     for (var i=0; i<len; i++){ 
      alert(results.rows.item(i).ID); 
      alert(results.rows.item(i).JSONdetails); 
     } 

} 

我是Phonegap的初學者。我試圖在本地SQLite數據庫中保存從服務器返回的數據。但我不知道爲什麼我會遇到未知的錯誤。請幫幫我 !!

回答

1

tx.executeSql中的第二個參數需要括號內的值。 tx.executeSql(sqlToExecuteForTx,bracketValuesForTx,success,error);

在您的代碼: tx.executeSql('INSERT INTO UserDetailsInJSONform (ID,JSONdetails) VALUES (1,"asd")',done,errorCB);

它已經「完成」的是指在你的代碼的函數第二個值。我會建議使用: tx.executeSql('INSERT INTO UserDetailsInJSONform (ID,JSONdetails) VALUES (?,?)',[1,"asd"],done,errorCB);

+0

對不起,回覆遲了,但我嘗試了代碼和工作,非常感謝你@nyluje。你救了我的命!!! :) – Swr7der