2016-11-24 46 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/