PplWare Mobile

Tutorial: Utilização do sqlite no Android (Parte I)


Pedro Pinto

Pedro Pinto é Administrador do site. É licenciado em Engenharia Informática pelo Instituto Politécnico da Guarda (IPG) e obteve o grau de Mestre em Computação Móvel pela mesma Instituição. É administrador de sistemas no Centro de Informática do IPG, docente na área da tecnologia e responsável pela Academia Cisco do IPG.

Destaques PPLWARE

  1. Márcio Soares says:

    @Of Topic.

    Procuro uma aplicação que me informe através de um icon na barrasuperior que a chamada que estou a receber é uma chamada reencaminhada de outro telefone se assim for o caso.
    É que tenho o meu numero fixo encaminhado para o móvel e por vezes atendo chamadas que até nem precisava de atender mas como não sei se é reencaminhada ou não tenho de atender.
    Na StockRom do meu SGS há um popup a avisar da chamada reencaminhada mas apenas aparece ao primeiro toque o que a torna inutil uma vez que não estou sempre a olhar para o ecra do mesmo.
    Algume conhece uma? Alguem se sente capaz de desenvolver algo do género?

  2. ze says:

    Excelente! Podiam fazer mais tutoriais de como programar em android!

  3. Tony says:

    Parabéns pela iniciativa. Continue o bom trabalho e a desenvolver estes tutoriais, como interessado em programar android agradeço-lhe.

  4. Espetaculo! Isto vai me ser tão útil! 🙂

  5. Em vez de usarem SQLite cru e duro eu aconselho usarem o ORMLite (ormlite.com).
    É uma biblioteca de Object Relational Mapping muito fácil de usar, leve e extremamente poderosa. Para não falar que o código de acesso/escrita na base de dados em sqlite fica extremamente simples e fácil de utilizar.
    Se quiserem até podia escrever um artigo para principiantes.
    Neste momento estamos a utilizar esta biblioteca na nossa app que conta com um modelo de dados bastante complexo: https://play.google.com/store/apps/details?id=com.pt.stt.h19

  6. Gabriel Queiroz says:

    Super util e bem explicado, gostei muito, parabens

  7. Miguel says:

    Será possivel meter um tutorial de como usar uma base de dados nossa?

    Ou seja, ter uma BD já em sqlite, e só fazer o import e leitura da BD?

    Já estive a ler uns tutorias, mas sou ainda muito verde nisto de programar.

    Obrigado desde já!

  8. John Kain says:

    Como adicionar campos booleanos numa base dados sqlite? É que o formato booleano, penso que não existe, tal como existe o SimpleDateFormat, etc, etc.

    Se alguém souber agradeço, já que está relacionado com o tema.
    É para utilizar num campo que em caso afirmativo aparecerá “Yes” em caso negativo aparecerá “No”.

    Obrigado.

    • David G. says:

      Eu utilizo uma string para booleanos no android. Yes ou No são as duas alternativas. No momento de avaliar a expressão faz-se um compare(“yes”).

      Ex: cursor2.getString(cursor2.getColumnIndex(“checkComprado”)).equals(“true”)

  9. Nuno Gonçalves says:

    Uma grande pergunta já que estão a falar de SQLite no Android, existe alguma plataforma como o Core Data no iPhone, é que desta maneira é basicamente um wrapper a volta do SQLite, queria se havia uma abstracção como o Core Data.

    • O que tu queres é uma biblioteca de ORM – Object Relational Mapping.
      Eu uso o ORMLite e aconselho vivamente. É muito mais fácil de usar que o SQLite nativo do Android e tem um poder brutal.

    • João Pedro says:

      Atenção que nem sempre o recurso a ORMs é a melhor solução. Estamos a desenvolver para dispositivos móveis e é necessário ter em conta factores como performance e utilização de bateria.
      ORMlite tem uma footprint mt pequena mas mesmo assim as vezes é preciso analisar bem o que se quer fazer.
      De resto, ORMLite ->Gosto

  10. Rudy says:

    Muito bom o post, você esta de parabéns.

    Você fala que a classe DbHelper, serve para criar o banco de dados no momento em que a app for instalada. Após o banco for criado as informações são mantidas nele mesmo após encerrar o app ou até mesmo após reiniciar o aparelho?

  11. José Fonseca says:

    Muito bem Mário!
    Gostei muito do tutorial. Como podes ver pelos posts, podes continuar a desenvolver o tema 😉
    Não pares.

  12. Joao says:

    Falta um pouco mais de comentarios no codigo.. torna-se um pouco complicado para quem está a começar..

  13. Rafael Sandim says:

    Excelente tutorial, estou com um probleminha quando tendo fazer em uma query o where e neste where eu quero pegar os tuplas aonde tenho “path=”+str, e str é igual a uma string deste formato “/mnt/sdcard/folder/teste/”

    porém quando eu tento fazer isso aparece um erro no logcat, informando erro perto do ‘/’, já fiz teste com strings e não tive problemas, porém quando eu coloco ‘/’ dispara erro.

    Alguém pode me ajudar?

  14. Alex says:

    Olá,

    Todas as linhas que tem DB.alguma coisa dá erro, como por exemplo:

    values.put(DB.NOME, nome);

    Estou començando agora, podem me ajudar? valeu

  15. Anilton Brandão says:

    Tenho Problema , e tambem nos contactos e Cursor

  16. Mike says:

    Não sei se estou distraído ou não mas onde é que surge a classe Contacto? Não encontro em parte alguma o código. Talvez seja o passo 3 que saltaram (passaram do 2.5 para o 4). Se puderem disponibilizar agradecia. Cumprimentos

  17. Ricardo Nakayama says:

    E ae galera, se vcs acharam que tem alguns passos incompletos, aconselho a ir para a parte 2 e puxar o código lá.

    https://pplware.sapo.pt/tutoriais/tutorial-utilizao-do-sqlite-no-android-parte-ii/

    Dois erros que eu verifiquei nessa parte:

    – o DB que ele chama era para ser o dbHelper

    – Na classe contato dele, existe um campo long para o _id
    (a classe contatos somente tem os contrutores e os getters/setters, mas novamente, caso estejam com dúvida, aconselho a ir para a próxima parte e verificar o código)

  18. Matheus says:

    Parabéns pelo tutorial, aproveitei muito.
    Apenas me restou uma dúvida, no caso meu BD tem 3 tabelas, posso criar as três utilizando a mesma classe DbHelper?

    Ficaria assim:

    @Override
    public void onCreate(SQLiteDatabase db) {
    db.execSQL(CREATE_CAMINHOES);
    db.execSQL(CREATE_PRODUTOS);
    db.execSQL(CREATE_ACESSORIOS);
    }

  19. rodrigocorreia says:

    Parabéns pelo tutorial!

    Alguma ideia do código para o método “editar” um contacto?
    Infelizmente essa parte não está contemplada no tutorial.

    Cumprimentos.

  20. Jessica says:

    Eu ando lendo muito e surgem muitas dúvidas.

    Minha dúvida é como eu faço para criar um banco de de Dados com informações só para serem acessadas(consultadas)

    Por exemplo tenho 3 spinners e um botão. Vou colocar um exemplo

    na 1º Spinner eu teria opções de escola, hospitais, praças (Lugares Públicos)…
    na 2º Spinner eu teria as opções de zonas da cidade,( zona 1, zona2, zona3..)
    na 3º spinner os principais os bairros da cidade( bairro A, bairro B…)

    se a spinner 1 eu escolher Escola
    e a spinner 3 eu escolher o Bairro A,
    e a pessoa clicar no botão pesquisar
    como eu faço para na próxima tela apresentar todas as escolas do Bairro A ??

    Não é pra inserir nada, queria saber como faz um banco de dados apenas para consultar dados inseridos!
    De modo que quando alguém selecionar o Bairro A, na tela seguinte faria uma query sobre esses dados (ex. select * from escola where bairro = ‘A’)
    Como eu faço isso??

  21. hou says:

    Me tira uma dúvida. Eu criei um sqlite por fora e tô colocando ele em na pasta assets pra depois copia-lo quando o aplicativo for instalado. Só que ele copia pra pasta certa o banco mas os atributos que estavam antes rw-rw-rw agora estão rw-rw- e com isso não consigo acessar o banco. Sabe o porque do arquivo ter perdido essas permissões?

  22. nuno says:

    Ainda não testei, mas gostaria de colocar uma questão.

    Se a base de dados tiver mais do que uma tabela, como se faz?

    Obrigado

  23. MRFerrari says:

    Olá. Gostei deste tutorial, pois cada etapa da implementação está bem explicada. Para iniciantes em Android, como eu, é uma mão na roda!
    No entanto surgiu uma dúvida com relação aos tópicos 4.5 e 4.9. Eu não entendi o uso do “DB.”

    (ContentValues values = new ContentValues();
    values.put(DB.NOME, nome);
    values.put(DB.EMAIL,email);
    values.put(DB.TELEFONE,telefone);)

    O que é o “DB” afinal? de onde ele surgiu?
    Agradeço desde já!
    MRFerrari.

  24. Max says:

    Olá,

    Achei bacana o tutorial, bem explicado parabéns.
    Contudo, notei que não foi implementado nenhum método para alteração de dados do contato, passando por exemplo o id ou o nome do contato, teria como fazer essa implementação?

    Grato.

  25. Lucas Siqueira says:

    Olá,

    Me tira uma duvida?… como eu faço pra carregar um listView com dados do banco SQLite sem a minha tabela ter o campo “_id”

    a tabela tem os campos “nome”,”numeroContrato”,”status”

    se eu colocar o “_id” da certo na hora de fazer o listView.setAdapter(adapter) , mas queria arrumar uma forma de não colocar esse campo “_id” na minha tabela.

    Preciso da ajuda de vocês…

    muito obrigado!

    Ótimo tutorial! esta de parabéns!

  26. Áquilas says:

    Utilizei esse tutorial e achei fantástico, fiz uma aplicação e funciona direitinho, porém dá esse erro: (Finalizing a Cursor that has not been deactivated or closed. database = /data/data/com.contactos/databases/contactos4.db, table = null, query = select _id, nome,telefone,foto from contactos2). Alguém poderia me ajudar a corrigi-lo? Desde já, obrigado.

  27. Keyros says:

    Olá a todos. Estou com dificuldade para instalar o eclipse…! alguém de me pode ajudar? obrigado.

  28. Robson Cesar de Siqueira says:

    Em 2.3 está faltando a constante TABLE_NAME :

    public static final String TABLE_NAME = “contactos2”;

Deixe uma resposta

O seu endereço de email não será publicado.

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. A administração deste site reserva-se, desde já, no direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.