SQLIte的'SUM(total)'在Android设备上不起作用,但在浏览器上不起作用

时间:2017-03-23 11:19:24

标签: android sqlite ionic-framework

我是离子框架的新手。我一直在用SQLite开发一个应用程序。该应用程序适用于浏览器。但是,当我在设备上运行它说

Cannot read property 'SUM(total)' of undefined

这是我的代码段:

 $scope.items = [];
    $scope.grandTotal = 0;
    $scope.receiptnumber = 0;
    $scope.receiptnumber = $scope.receiptnumber + 1;
    $scope.items = [];
    $scope.item = {};
    $scope.grandTotal = null;



    $ionicPlatform.ready(function () {

        //EXPERIMENT CODE STARTS 
        var query2 = "SELECT * FROM items WHERE quantity!='' ";
        console.log(query2);
        $cordovaSQLite.execute(db, query2, []).then(function (res) {

            if (res.rows.length > 0) {

                for (var i = 0; i < res.rows.length; i++) {

                    $scope.items.push({

                        itemname: res.rows.item(i).itemname,
                        price: res.rows.item(i).price,
                        quantity: res.rows.item(i).quantity,


                    });

                    // $scope.items = $scope.items;
                    // console.log($scope.items);
                    $scope.items = $scope.items;

                }
            } else {
                console.log("No results found");
            }
        }, function (err) {
            console.error("error=>" + err);
        });

        //EXP CODE ENDS


        $ionicHistory.clearCache();
        $ionicHistory.clearHistory();



        //GRAND TOTAL CALCULATION STARTS
        var query = "SELECT SUM(total) FROM items";

        console.log(query);
        $cordovaSQLite.execute(db, query, []).then(function (res) {


            // $scope.grandTotal = res.rows[0]['SUM(total)'];
            console.log("SUM TOTAL TEST");
            console.log(res.rows);



        }, function (err) {
            console.error("error=>" + err);
        });



        //GRAND TOTAL CALCULATION ENDS            







        //Back button STARTS
        $scope.myGoBack = function () {

            $state.go("menu.sales");
            // window.history.back();

        };

        //BackButton ends

        //Charge button functionality STARTS===============================/////////////////////////

        $scope.charge = function () {

            $state.go('transactionsuccess');

            // INITIAL UPDATE OF ORDER NUMBER STARTS

            // var query5 = "UPDATE receipt SET ordernumber=" + "'" + $scope.receiptnumber + "'" + " WHERE quantity!='' OR quantity!='undefined' ";
            // console.log(query5);

            // $cordovaSQLite.execute(db, query5, []).then(function (result) {

            //     $scope.items = [];
            //     $scope.grandTotal = 0;


            // }, function (err) {
            //     console.error(err);
            // });

            //ENDS            

        }


    });

我正在做的不是将SUM值保存到数据库中而是直接从程序中获取它。这段代码正在完成:

$scope.grandTotal = res.rows[0]['SUM(total)'];

因为我不知道获取SUM(总数)的任何替代方法并将其保存在变量中以便它在浏览器和设备上都能正常工作......谢谢。

1 个答案:

答案 0 :(得分:2)

documentation说:

  

如果存在AS子句,则结果列的名称是该列的“AS”子句的值。如果没有AS子句,那么列的名称是未指定的,可能会从SQLite的一个版本更改为下一个。

因此,您必须使用SELECT sum(total) AS MyLittleSum ...来获取可预测的列名。