0

テーブルにデータを挿入する前に、重複する列(アイテム)をチェックする必要があります。しかし、それは非同期呼び出しです。動作していません。値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();
}



}
4

1 に答える 1

0

insertDataへの呼び出しをqueryexcecute関数に移動します。

表全体を自分で読む必要はないことに注意してください。これを実行するだけです:

SELECT 1 FROM CaseTable WHERE CaseName = ?

レコードが返されるかどうかを確認します。

UNIQUEまたは、列に制約があることを確認し、 INSERT OR IGNOREステートメントCaseNameを無条件に実行します。

于 2013-07-13T08:49:53.340 に答える