Como utilizar banco de dados SQLite prepopulado com ionic

Depois de muito pesquisar na internet, finalmente uma resposta para a solução do problema.

Como quem se prontificou a ler esse texto, vamos logo a resposta.
Primeiramente você deve utilizar esses plugins cordova:

cordova-sqlite-storage 1.4.6 “Cordova sqlite storage plugin”
cordova-plugin-dbcopy 1.0.4 “sqlDB”

Feito isso, adicione o ngCordova ao seu projeto

$ bower install ngCordova
<script src="lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>

***Adicione o arquivo ng-cordova.js ou ng-cordova.min.js antes do cordova.js

Feito isso, adicione esse código ao seu arquivo app.js

if(window.StatusBar) {
 StatusBar.styleDefault();
 }
window.plugins.sqlDB.copy(“test.db”, function() {
 db = $cordovaSQLite.openDB({name:”test.db”, location:0});
 }, function(error) {
 console.error(“There was an error copying the database: “ + error);
 db = $cordovaSQLite.openDB({name:”test.db”, location:0});
 });
 });

*** Repare que o código em negrito é inserido após o if que vem por padrão em projetos com ionic. Repare também que o parâmetro location está com o valor 0(zero). Na minha implementação, o valor "default" para o location não funcionou corretamente.

Feito isso, criei no controller uma função para testar se o banco de dados prepopulado de fato tinha sido aberto com sucesso. Esse código foi pego do tutorial do desenvolvedor da biblioteca

var query = “SELECT nome, email FROM user”;
 $cordovaSQLite.execute(db, query, []).then(function(res) {
 if(res.rows.length > 0) {
 for(var i = 0; i < res.rows.length; i++) {
 console.log(“SELECTED -> “ + res.rows.item(i).nome + “ “ + res.rows.item(i).email);
 }
 } else {
 console.log(“No results found”);
 }

Esse código fica dentro de uma função simples $scope.minha_funcao = function($scope){}

Por último e mais importante é colocar seu arquivo bancodedados.db no local correto para ser copiado e aberto com sucesso.

Coloque seu arquivo na pasta www do seu projeto ionic e já pode testá-lo.

  • ****** ATENÇÃO ********

Essa implementação não vai funcionar no ionic serve e nem no ionic view visto que essas plataformas não tem acesso aos objetos do cordova.

Agora é só fazer um build $ cordova build ios ou $ sudo cordova build ios e testar no xcode.

Qualquer dúvida, é só deixar aqui no comentário que logo responderei

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.