捕获WebSQL命令的错误

时间:2016-11-24 12:11:28

标签: javascript html5 web-sql

在我努力学习更多关于WebSQL的过程中,我遇到了一个" Errorundifined"在我的JavaScript代码中。我已对代码进行了测试,但似乎无法找到错误。但是,数据库" To Do"得到了创造但不是表格#34;任务"。有人可以帮忙!

<!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>

1 个答案:

答案 0 :(得分:0)

您在调试程序时遇到的主要问题是错误回调的签名不正确,它传递了两个参数,即事务和错误(类似于成功回调如何通过事务和结果)。

如果您将errorCB更改为

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

您将看到错误:

  

SQLError {代码:5,消息:&#34;无法准备声明(1没有这样的表:任务)&#34;}

实例:https://jsfiddle.net/toscqrzz/

如果您向原始CREATE TABLE提供相同的回调,则会看到

  

SQLError {代码:5,消息:&#34;无法准备语句(1接近&#34;创建&#34;:语法错误)&#34;}

实例:https://jsfiddle.net/ykhL9va6/