【问题标题】:how to call synchronise call in sqlite phonegap (check duplicate item before insert )如何在 sqlite phonegap 中调用同步调用(插入前检查重复项)
【发布时间】:2013-07-13 03:52:08
【问题描述】:

在将数据插入表之前,我需要检查重复的列(项目)。但它是异步调用。所以它不起作用。我需要调用同步调用,以便我可以获得值 true 和 false

然后检查插入值与否。

function validationField() {
          db.transaction(getallTableCntend, errorCB);
        }


        function getallTableCntend(tx) {
            tx.executeSql('SELECT * FROM CaseTable', [], queryexcecute, errorCB);
        }
        function queryexcecute(tx, result) {
            var len = result.rows.length;

            for (var i = 0; i < len; i++) {
              if(result.rows.item(i).CaseName ==$('.caseName_h').val()){
                alert("Folder is already Exit.");
                isvalid=false;
                Break;
                return;;
              }


            }
           }

    I am calling this like this.
    $(document).on('click', '#AddButton', function() {
         isvalid = validationField();
        if (isvalid) {
                insertData();
                window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, onFileSystemFail);



        }
    });

我可以这样创建表吗.. tx.executeSql('CREATE TABLE IF NOT EXISTS CaseTable (id INTEGER PRIMARY KEY AUTOINCREMENT, CaseName TEXT NOT NULL UNIQUE,CaseDate INTEGER ,TextArea TEXT NOT NULL)'); 并像那样使用...

tx.executeSql('INSERT OR IGNORE  INTO CaseTable(CaseName,CaseDate,TextArea) VALUES ("' + $('.caseName_h').val() + '", "' + $('.caseDate_h').val() + '","' + $('.caseTextArea_h').val() + '")');

----------------------------------------------做那样---------------

function checkExitingFolderName(){
db.transaction(getallTableCntend, errorCB);
}

function getallTableCntend(tx) {
    tx.executeSql('SELECT 1 FROM CaseTable WHERE CaseName ='+$('.caseName_h').val(), [], queryexcecute, errorCB);
}
function queryexcecute(tx, result) {
    var len = result.rows.length;
    alert("hi"+length);
if(len>0){
alert("Folder")
}
else{
insertData();
}



}

【问题讨论】:

    标签: jquery sql sqlite cordova


    【解决方案1】:

    将对insertData 的调用移动到queryexcecute 函数中。

    请注意,您不需要自己阅读整个表格;只需执行此操作:

    SELECT 1 FROM CaseTable WHERE CaseName = ?
    

    并检查您是否获得了一些记录。

    或者,确保CaseName 列上有UNIQUE 约束,并无条件地执行INSERT OR IGNORE 语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-04
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 2017-04-03
      • 2021-01-20
      • 1970-01-01
      相关资源
      最近更新 更多