why error method call first before success method?

I am trying to make simple demo of sqlite in ionic + angular js project .I am inserting the data in database .But my error function call first then success why ? Follow the steps 1

  • Press the bottom left button it show the pop up screen .enter the text on pop up screen .After press add button I am inserting the data on database.But while inserting my error alert first then success come why ?

here is my code http://codepen.io/anon/pen/ZGYKvE

app.factory('sqlservice',function($q){
      var db;
        var task='';
        var deleteTask;

      function createDB(){
        try{
            db=window.openDatabase("ATMSDB","1.0", "ATMSDB", 10*1024*1024);
            db.transaction(function(tx){
                tx.executeSql('CREATE  TABLE "Cases" ("ID" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , "CaseName" VARCHAR NOT NULL )');
            })

        }catch (err) {
            alert(err);

        }
      }

      function insertDataOnDataBase(testCaseName){
        return promiseQuerry("INSERT INTO Cases (CaseName) VALUES ('"+testCaseName+"')",defaultResultHandler,defaultErrorHandler)
      }

        function promiseQuerry(query,success,error){
         var defferrd =$q.defer();
            db.transaction(function(tx){
                tx.executeSql(query,[],success(defferrd),error(defferrd));
            })
            return defferrd.promise;
        }
        function defaultResultHandler(defferrd){
            return function(tx,result){
                alert("success")
                var len=result.rows.length;
                var output_results = [];
                for (var i=0; i<len; i++){
                    var t = {'ID':results.rows.item(i).ID,'CaseName':results.rows.item(i).CaseName};
                    output_results.push(t);
                }
                defferrd.resolve(output_results);
            }



        }
        function defaultErrorHandler(defferrd){
           alert("error")
            return function(tx, results) {
                var len = 0;
                var output_results = '';

                defferrd.resolve(output_results);
            }
        }

        return{
            setup: function() {
                return createDB();
            },
            insertData:function(testCaseName){
               return insertDataOnDataBase(testCaseName);
            }
        }
})

Secondly :

I am able to insert data on data base but I am getting two column of ID why in table ?