2016-09-18 75 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