2
respostas

Trabalhar com Banco de Dados Interno

Uma alternativa para trabalhar com banco de dados interno do celular no curso é apresentado WebSQL, eu preciso armazenar primeiramente internamente no celular para depois enviar para servidor, é possível utilizando o WebSQL?

2 respostas

Como mostrado no curso, vc pode sim salvar dados no celular usando o WebSQL. Depois que o dado estiver armazenado, vc pode fazer oq quiser com ele: Enviar para um backend, deixar ele salvo no celular, alterar esse dado, etc.

Não consigo salvar as informações usando webSQL.

Controller

angular.module('starter')
.controller('TipoDadoAmostraController', function($scope,$stateParams,$state,$cordovaGeolocation,$ionicPopup,FieldService,$ionicHistory,DatabaseValues) {

    $scope.categoria_id = angular.fromJson($stateParams.categoria_id);
    var categoria_tipo = $scope.categoria_id;
    var usuario_id = window.localStorage.getItem("id");

    $scope.amostra = {};

    var options = {timeout: 10000, enableHighAccuracy: true};

    $cordovaGeolocation.getCurrentPosition(options).then(function (position) {
                var lat  = position.coords.latitude;
                   var long = position.coords.longitude;

                $scope.amostra.lat = lat;
                $scope.amostra.lng = long;

    },function(err) {
       $ionicPopup.alert({
            title : 'Erro!',
            template : 'Impossível pegar a coordenada.'
        }).then(function(){
            $state.go('app.tipo');
        })
    });

    $scope.fazerAmostra = function(){

        if(categoria_tipo == 1){
            var amostra = {
                params : {
                    user_id : usuario_id,
                    cod_amostra : $scope.amostra.cod_amostra,
                    tipo_dado_id : categoria_tipo,
                    latitude : $scope.amostra.lat,
                    longitude :  $scope.amostra.lng,
                    profundidade : $scope.amostra.profundidade,
                    tipo : $scope.amostra.tipo,
                    observacao : $scope.amostra.dados_adicionais
                }
            }
        }else if(categoria_tipo == 2){
            var amostra = {
                params : {
                    user_id : usuario_id,
                    cod_amostra : $scope.amostra.cod_amostra,
                    tipo_dado_id : categoria_tipo,
                    latitude : $scope.amostra.lat,
                    longitude :  $scope.amostra.lng,
                    altura : $scope.amostra.altura,
                    observacao : $scope.amostra.dados_adicionais
                }
            }
        }
        else if(categoria_tipo == 3){
            var amostra = {
                params : {
                    user_id : usuario_id,
                    cod_amostra : $scope.amostra.cod_amostra,
                    tipo_dado_id : categoria_tipo,
                    latitude : $scope.amostra.lat,
                    longitude :  $scope.amostra.lng,
                    profundidade : $scope.amostra.profundidade,
                    observacao : $scope.amostra.dados_adicionais
                }
            }
        }else if(categoria_tipo == 4){
            var amostra = {
                params : {
                    user_id : usuario_id,
                    cod_amostra : $scope.amostra.cod_amostra,
                    tipo_dado_id : categoria_tipo,
                    latitude : $scope.amostra.lat,
                    longitude :  $scope.amostra.lng,
                    especie : $scope.amostra.especie,
                    observacao : $scope.amostra.dados_adicionais
                }
            }
        }
        else if(categoria_tipo == 5){
            var amostra = {
                params : {
                    user_id : usuario_id,
                    cod_amostra : $scope.amostra.cod_amostra,
                    tipo_dado_id : categoria_tipo,
                    latitude : $scope.amostra.lat,
                    longitude :  $scope.amostra.lng,
                    familiageneroespecie : $scope.amostra.familiageneroespecie,
                    observacao : $scope.amostra.dados_adicionais
                }
            }
        }
        console.log(amostra);
        FieldService.salvarAmostra(amostra).then(function(dados){

            $scope.salvarDadosNoBancoDeDados('true');

            $ionicHistory.nextViewOptions({
                disableBack : true
            })

            $ionicPopup.alert({
                title: 'Field Note',
                template: 'Você acaba de enviar uma amostra.'
            }).then(function(){
                $state.go('app.tipo');
            });

        }, function(erro){
            $scope.salvarDadosNoBancoDeDados('false');

            $ionicHistory.nextViewOptions({
                disableBack : true
            })

            $ionicPopup.alert({
                title : 'Ops!',
                template : 'Servidor com problemas. Tente mais tarde.'
            }).then(function(){
                $state.go('app.tipo');
            })

        });

        $scope.salvarDadosNoBancoDeDados = function(confirmado){
            DatabaseValues.setup();
            DatabaseValues.bancoDeDados.transaction(function(transacao){
                    transacao.executeSql('INSERT INTO amostra_agua(cod_amostra, latitude, longitude, data_hora, observacao,tipo,profundidade,confirmado) VALUES (?,?,?,?,?,?,?,?)', [$scope.amostra.cod_amostra, $scope.amostra.lat,$scope.amostra.lng, $scope.amostra.dados_adicionais,$scope.amostra.profundidade,$scope.amostra.tipo, confirmado])

            })
        }    
    }
});

Dei um console.log e as informações são carregadas, ele simplesmente não salva, DatabaseValues

angular.module('starter')
.value('DatabaseValues', {
    setup : function(){
         this.bancoDeDados = window.openDatabase('fieldnote', '1.0', 'Banco de dados da aplicacao', 3000);
    }
})

coloquei no APP já para cria as tabelas, ele cria lá, porém não consigo salvar. OBS: Estou tentando salvar no celular as informações do parametro.