Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs sqlite事务中的错误函数未返回任何错误_Angularjs_Sqlite - Fatal编程技术网

Angularjs sqlite事务中的错误函数未返回任何错误

Angularjs sqlite事务中的错误函数未返回任何错误,angularjs,sqlite,Angularjs,Sqlite,我正在使用下面的代码与sqlite数据库交互 var defferd = $q.defer(); var db = openConn('test1','1.0.0' , 'test1' , 200000); db.transaction(insertUserInformation, errorDB, successDB); function insertUserInformation(tx) { tx.execut

我正在使用下面的代码与sqlite数据库交互

var defferd = $q.defer();

         var db = openConn('test1','1.0.0' , 'test1' , 200000);
         db.transaction(insertUserInformation, errorDB, successDB);

         function insertUserInformation(tx) {
            tx.executeSql('CREATE TABLE IF NOT EXISTS USERINFO (ID UNIQUE, USERNAME , FULLNAME , PROFILEPIC , ACCESS_TOKEN)');
         }

    function openConn(databaseName, dbVersion, dbShowName, dbSize){
        return window.openDatabase(databaseName, dbVersion, dbShowName, dbSize);
     }

    function errorDB(tx, err) {
        defferd.reject(err);
    }

    function successDB() {
        defferd.resolve(result)
    }

return defferd.promise;
运行此代码后,一切正常。但当我将查询更改为insert时,会触发errorDB函数,但不会返回任何错误,我无法确定这是什么错误


如何处理sqlite事务的错误首先需要指定主键,因此将creating table query更新为

tx.executeSql('CREATE TABLE IF NOT EXISTS USERINFO (ID INTEGER PRIMARY KEY ASC, USERNAME , FULLNAME , PROFILEPIC , ACCESS_TOKEN)');
注意:之前不要忘记放下旧桌子

什么之后

function insertUserInformation(tx) {
    tx.executeSql('insert into USERINFO VALUES (null, "2", "3", "4", "5");');
}
对我来说很好

还有一件事: errol回调(errorDB函数)应该只有一个参数

function errorDB(err) {
        defferd.reject(err);
        console.log(err);
    }
因此,在本例中,err将是如下所示的SQLError对象:

{
    code: 6
    message: "could not execute statement due to a constaint failure (19 UNIQUE constraint failed: USERINFO.ID)"
}