2013-07-13 19 views
0

我需要在插入表中的數據之前檢查重複的列(項目)。但它是異步調用.so它不工作。我需要調用同步呼叫,以便我可以得到值true和false如何在sqlite phonegap中調用同步調用(在插入前檢查重複項)

然後檢查是否插入值。

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,文本區域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(); 
} 



} 

回答

0

移動呼叫insertDataqueryexcecute功能。

請注意,您不需要自己閱讀整個表;只需執行此操作:

SELECT 1 FROM CaseTable WHERE CaseName = ? 

並檢查是否獲得某條記錄。

或者,確保您對CaseName列有UNIQUE約束,並無條件執行INSERT OR IGNORE語句。

+0

請深深解釋先生.. – user2549922

+0

解釋究竟是什麼? –

+0

檢查我的更新..最後兩行 – user2549922

相關問題