2016-11-24 101 views
-1

在我努力學習關於WebSQL的更多信息時,我在JavaScript代碼中遇到了「錯誤檢測」。我測試了代碼,似乎無法找到錯誤。但是,數據庫「待辦事項」已創建,但沒有「任務」表。有人可以幫忙!從WebSQL命令中捕獲錯誤

<!doctype html> 
<html lang="en"> 
    <head> 
    <meta charset="utf-8"> 
    <title>Untitled Document</title> 
    <script type="text/javascript" src="../js/jquery.js"></script> 
    <script> 
     var db = null; 
     var db = openDatabase('To Do', '1.0', 'To Do', 2 * 1024 * 1024); 
     db.transaction(function(tx) { 
      tx.executeSql('CREATE TABLE IF NOT EXISTS tasks (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, create unique, name, description, due DATETIME)'); 
}); 

     $('document').ready(function() { 
      var db = openDatabase('To Do', '1.0', 'To Do', 2 * 1024 * 1024);   
      db.transaction(function(tx) { 
       tx.executeSql('SELECT * FROM tasks', [], querySuccess, errorCB); 
    }); 

     function querySuccess(tx, results) { 
      var len = results.rows.length; 
       if(len > 0) { 

      }else{ 
       alert("You Have No Tasks"); 

       } 
     } 

     function errorCB(err) { 
      alert("Error" + err.code); 
     } 

    }); 

    </script> 
    </head> 

    <body> 

     <h1>Hello World!</h1> 

    </body> 
</html> 
+0

請給我們提供代碼。 –

+0

我試圖建立一個離線網站的HTML5關係數據庫僅供內部使用,而不使用後端服務器。這是迄今爲止我所有的代碼。我無法通過javascript中的「Errorundefind」錯誤。 –

回答

0

你在調試程序運行的主要問題是,你的錯誤回調的簽名不正確,這兩個參數傳遞,事務,然後錯誤(類似成功的回調是如何傳遞交易和結果)。

如果你改變你的 errorCB

function errorCB(tx,err) { 
    console.log(err); 
} 

你會看到錯誤

是:

的SQLError {碼:5消息:「無法準備的語句(1沒有這樣的表:任務)「}

活生生的例子:https://jsfiddle.net/toscqrzz/

如果你提供相同的回調到原來的CREATE TABLE你會看到

的SQLError {碼:5消息:「無法準備的語句(1附近的‘創造’:語法錯誤)」}

現場示例:https://jsfiddle.net/ykhL9va6/