2013-03-17 22 views
1

我正在开发,抓住一个网站,RSS提要,并把它保存到数据库中,使用HTML5/JavaScript的sqlite的Web应用程序。如何在HTML5 Javascript sqlite上插入表之前检查数据是否已经存在?

这是我的代码

function createPosts(title,author,content,contentSnippet,publishedDate,img_destaque){ 
     var oldPost = checkIfExists(publishedDate); 
     console.log(oldPost); 
     if(!oldPost){ 
      var query = "insert into mytable (titulo, data, autor, img_destaque,descricao,postagem) VALUES (?, ?, ?, ?, ?, ?);"; 
      try { 
       localDB.transaction(function(transaction){ 
        transaction.executeSql(query, [title, publishedDate, author, img_destaque, contentSnippet, content], function(transaction, results){ 
         if (!results.rowsAffected) { 
          updateStatus("Error, not data inserted"); 
         } 
         else { 
          updateStatus("Data inserted, id: " + results.insertId); 
         } 
        }, errorHandler); 
       }); 
      } 
      catch (e) { 
       updateStatus("Error: " + e + "."); 
      } 
     } 
     else{ 
      updateStatus("Error: Post already exists"); 
     } 

} 

这是函数checkIfExists

function checkIfExists(publishedDate){ 
    var query = "SELECT * FROM mytable;"; 
    var returnStatus; 
    try { 
     localDB.transaction(function(transaction){ 
      transaction.executeSql(query, [], function(transaction, results){ 
       for (var i = 0; i < results.rows.length; i++) { 
        var row = results.rows.item(i); 
        if(publishedDate === row.data){ 
         console.log(publishedDate+' '+row.data); 
         returnStatus = true; 
        } 
       } 
       if(i == results.rows.length){ 
        returnStatus = false; 
       } 
      }, function(transaction, result){ 
        returnStatus = true; 
      }, function(transaction, error){ 
       updateStatus("Erro: " + error.code + "<br>Mensagem: " + error.message); 
        returnStatus = true; 
      }); 

     }); 
    } 
    catch (e) { 
     updateStatus("Error: SELECT não realizado " + e + "."); 
     returnStatus = true; 
    } 
    finally{ 
     console.log(returnStatus); 
     return returnStatus; 
    } 
} 

但它不工作oldPost总是返回“不确定”,并与我的控制台记录我看到的LocalDB。在函数返回“oldPost”变量值后处理事务。我该如何解决这个问题?

回答

2

如何重构checkifExists采取两个回调和使用where子句的SQL而不是做在JavaScript中搜索以

function checkIfExists(publishedDate,callbacktrue,callbackfalse){ 
    var query = "SELECT * FROM mytable WHERE data=?;"; 
    try { 
     localDB.transaction(function(transaction){ 
      transaction.executeSql(query, [publishedDate], function(transaction, results){ 
       if(results.rows.length > 0){ 
        callbacktrue(); 
       } else { 
        callbackfalse(); 
       } 
      }, function(transaction, result){ 
        callbacktrue(); 
      }, function(transaction, error){ 
       updateStatus("Erro: " + error.code + "<br>Mensagem: " + error.message); 
        callbacktrue(); 
      }); 

     }); 
    } 
    catch (e) { 
     updateStatus("Error: SELECT não realizado " + e + "."); 
     callbacktrue(); 
    } 
} 
function createPosts(title,author,content,contentSnippet,publishedDate,img_destaque){ 
    checkIfExists(publishedDate,function(){ 
      updateStatus("Error: Post already exists"); 
     },function(){ 
      var query = "insert into mytable (titulo, data, autor, img_destaque,descricao,postagem) VALUES (?, ?, ?, ?, ?, ?);"; 
      try { 
       localDB.transaction(function(transaction){ 
        transaction.executeSql(query, [title, publishedDate, author, img_destaque, contentSnippet, content], function(transaction, results){ 
         if (!results.rowsAffected) { 
          updateStatus("Error, not data inserted"); 
         } 
         else { 
          updateStatus("Data inserted, id: " + results.insertId); 
         } 
        }, errorHandler); 
       }); 
      } 
      catch (e) { 
       updateStatus("Error: " + e + "."); 
      } 
    });    
} 
+0

此解决方案。谢谢。 – steps 2013-03-29 13:11:21

0

可以使用:

<input type="text" name="name" class="text_cs"> 
<span class="result"></span> </br> 
Data:<span class="data-id">123,43,52,15</span> 

和javascript:

$('.text_cs').on('change', function(){ 
var pid = $(this).val(); 
var table = $('.data-id'); 
if(table.html().split(",").indexOf(pid) != -1) { 
    $('.result').html("ID exist"); 
} 
    else { 
     $('.result').html("Not exist"); 
    } 

});

相关问题