【问题标题】:Phonegap SQLite error processing 5: No. of '?' doesn't matchPhonegap SQLite 错误处理 5: No. of '?'不匹配
【发布时间】:2016-09-18 09:55:42
【问题描述】:

我不知道我的代码发生了什么。我不知道为什么在我不使用“?”时,语句字符串中的“?”数量与争论计数不匹配插入值。这是我的代码:

    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 DB 中。但我不知道为什么我会收到未知错误。请帮帮我!!

【问题讨论】:

    标签: android sqlite cordova insert phonegap-build


    【解决方案1】:

    tx.executeSql 中的第二个参数需要括号之间的值。 tx.executeSql(sqlToExecuteForTx,bracketValuesForTx,success,error);

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

    它有'done' 作为第二个值,它指代代码中的一个函数。我建议使用: tx.executeSql('INSERT INTO UserDetailsInJSONform (ID,JSONdetails) VALUES (?,?)',[1,"asd"],done,errorCB);

    【讨论】:

    • 抱歉回复晚了,但我尝试了代码并且有效,非常感谢@nyluje。你救了我的命!!! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 2016-11-17
    • 1970-01-01
    • 2018-10-20
    相关资源
    最近更新 更多