Meu projeto usando Sqlite em Android não funciona [RESOLVIDO]  XML
Índice dos Fóruns » Google Android e Java Micro Edition (ME)
Autor Mensagem
graffiti75
Debugger

Membro desde: 03/02/2012 14:24:31
Mensagens: 74
Offline

Olá pessoal!

É a 1ª vez que posto no Guj. Se eu cometer algum erro de postagem, peço perdão desde já.

Enfim, estou criando um projeto e apenas parte dele funciona. Ele possui 3 tabelas, e destas, apenas 1 faz a pesquisa no Sqlite de forma correta. Por algum motivo desconhecido as outras 2 não o fazem corretamente. As tabelas se chamam Disciplina, Pergunta e Resposta. A pesquisa que funciona é a da tabela Pergunta.

Porém, quando insiro um dado na tabela Resposta, e faço sua pesquisa, ela funciona! Isso é intrigante.

Se alguém quiser dar uma olhada no meu projeto, eis o link dele logo abaixo.

http://www.4shared.com/rar/G7bta9S_/TesteSqlite.html

This message was edited 1 time. Last update was at 11/02/2012 02:17:51

graffiti75
Debugger

Membro desde: 03/02/2012 14:24:31
Mensagens: 74
Offline

Gostaria de entender onde errei neste programa, pois ultimamente venho tentando manipular banco de dados em Android, mas sempre surge algum erro que impede que tudo funcione.
felipebonezi
JavaEvangelist
[Avatar]

Membro desde: 28/04/2010 12:28:06
Mensagens: 330
Localização: Recife/PE
Offline

Oi,

Olha esse post: http://debugcodigos.blogspot.com/2011/06/sqlite-para-android-como-utilizar.html

Espero ajudar. Qualquer coisa, fala ae.
Abraço.

Felipe Bonezi
Graduando em Engenharia da Computação-POLI/UPE

Blog Android/WP7/iOS @ Debug de Códigos
-

[WWW] [MSN]
graffiti75
Debugger

Membro desde: 03/02/2012 14:24:31
Mensagens: 74
Offline

Olá Felipe!

Estava dando uma olhada no seu link. A classe DataBase extende da classe SQLiteOpenHelper. Porém, neste link, a classe SQLiteOpenHelper não está explicitada.

Por isso, saí pelo Google procurando pela implementação de tal classe, e a encontrei no link abaixo:

http://www.netmite.com/android/mydroid/cupcake/frameworks/base/core/java/android/database/sqlite/SQLiteOpenHelper.java

Porém, está classe dá erro nos métodos .lock e .unlock da variável mDatabase, cuja declaração é:



Logo, seu link não funciona para meu teste.

Será que alguém não tem um exemplo básico de CRUD (Create, Read, Update e Delete) em SQLite de Android? Os que testei de sites como o do Felipe Silveira, e do livro do Ricardo Lecheta, funcionam em parte, mas não em sua totalidade.

O que eu precisava era de um CRUD que relacionasse 3 tabelas entre si, e que soubesse diferenciar quando o banco já foi criado e quando ele ainda não foi.
felipebonezi
JavaEvangelist
[Avatar]

Membro desde: 28/04/2010 12:28:06
Mensagens: 330
Localização: Recife/PE
Offline

Ué, o que eu te enviei faz o que você quer.
Quando você instancia, se ele não foi criado, ele cria. Se ele já está criado, ele apenas referência o database.

Acho que você não estendeu muito bem,

Felipe Bonezi
Graduando em Engenharia da Computação-POLI/UPE

Blog Android/WP7/iOS @ Debug de Códigos
-

[WWW] [MSN]
graffiti75
Debugger

Membro desde: 03/02/2012 14:24:31
Mensagens: 74
Offline

Opa, então testarei sem instanciar mesmo...
graffiti75
Debugger

Membro desde: 03/02/2012 14:24:31
Mensagens: 74
Offline

Olá!

Criei um projeto com as dicas daquele link que você me passou. Eis a estrutura do projeto:

http://www.4shared.com/photo/vnYFGHQh/FelipeBonezi.html

Eis o conteúdo da classe Disciplina.java:



Eis o conteúdo da classe DataBase.java:



Eis o conteúdo da classe LoginActivity.java:



E eis os erros que aparecem quando executo esta aplicação:

http://www.4shared.com/photo/HTA9g7bH/Erro_FelipeBonezi.html?

http://www.4shared.com/photo/zSWwJqy4/LogCat_FelipeBonezi.html?

Ou seja, são os mesmos erros do projeto inicial que postei nesse tópico. Que erros são esses? São os que estão reforçados em azul no último link acima.
felipebonezi
JavaEvangelist
[Avatar]

Membro desde: 28/04/2010 12:28:06
Mensagens: 330
Localização: Recife/PE
Offline

Retire a seguinte linha das variaveis da sua classe Database.


E dentro do seu método de incluir use:


Listar:


=)

Felipe Bonezi
Graduando em Engenharia da Computação-POLI/UPE

Blog Android/WP7/iOS @ Debug de Códigos
-

[WWW] [MSN]
graffiti75
Debugger

Membro desde: 03/02/2012 14:24:31
Mensagens: 74
Offline

Eu modifiquei a classe DataBase.java para o seguinte código, obedecendo suas dicas. Eu mantive a linha 16 porque ela é usada no método onCreate():



Na classe LoginActivity.java, descomentei as linhas 31 até 37:



Os erros obtidos são os mesmos que comecei a obter terça-feira da semana passada, que são erros como no such table, java.lang.RuntimeException: Unable to start activity ComponentInfo. Só a clássica Caused by: java.lang.NullPointerException, seguida de at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203) que não apareceu desse vez.


  • 02-07 19:42:46.388: I/teste(419): Listando disciplinas.
    02-07 19:42:46.418: I/teste(419): 'ReadableDatabase()' obtido.
    02-07 19:42:46.418: I/Database(419): sqlite returned: error code = 1, msg = no such table: quizz
    02-07 19:42:46.418: D/AndroidRuntime(419): Shutting down VM
    02-07 19:42:46.428: W/dalvikvm(419): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
    02-07 19:42:46.448: E/AndroidRuntime(419): FATAL EXCEPTION: main
    02-07 19:42:46.448: E/AndroidRuntime(419): java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.android.projeto/br.com.android.projeto.LoginActivity}: android.database.sqlite.SQLiteException: no such table: quizz: , while compiling: SELECT * FROM quizz ORDER BY id
    02-07 19:42:46.448: E/AndroidRuntime(419): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
    02-07 19:42:46.448: E/AndroidRuntime(419): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    02-07 19:42:46.448: E/AndroidRuntime(419): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    02-07 19:42:46.448: E/AndroidRuntime(419): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    02-07 19:42:46.448: E/AndroidRuntime(419): at android.os.Handler.dispatchMessage(Handler.java:99)
    02-07 19:42:46.448: E/AndroidRuntime(419): at android.os.Looper.loop(Looper.java:123)
    02-07 19:42:46.448: E/AndroidRuntime(419): at android.app.ActivityThread.main(ActivityThread.java:4627)
    02-07 19:42:46.448: E/AndroidRuntime(419): at java.lang.reflect.Method.invokeNative(Native Method)
    02-07 19:42:46.448: E/AndroidRuntime(419): at java.lang.reflect.Method.invoke(Method.java:521)
    02-07 19:42:46.448: E/AndroidRuntime(419): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:86
    02-07 19:42:46.448: E/AndroidRuntime(419): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    02-07 19:42:46.448: E/AndroidRuntime(419): at dalvik.system.NativeStart.main(Native Method)
    02-07 19:42:46.448: E/AndroidRuntime(419): Caused by: android.database.sqlite.SQLiteException: no such table: quizz: , while compiling: SELECT * FROM quizz ORDER BY id


  • A questão é:

    Eu preciso de um projeto Android que acesse banco de dados, e que crie tabelas (ou leia-as caso já existam), remova, insira e atualize, sem dar erros como os listados acima.

    Já tentei diversas abordagens (Felipe Silveira, Ricardo Lecheta, Felipe Bonezi), mas elas sempre funcionam pela metade (ou só inserem, ou só pesquisam, ou só criam tabela toda vez, etc).
    marcelohd02
    Thread.start()
    [Avatar]

    Membro desde: 28/08/2008 12:00:55
    Mensagens: 45
    Offline

    http://www.luiztools.com/post/Criando-uma-app-Android-com-banco-de-dados-SQLite.aspx
    http://yuriadamsmaia.wordpress.com/2011/03/30/desenvolver-para-android-persistencia-com-sqlite-i-criando-o-modelo-e-dao/
    http://yuriadamsmaia.wordpress.com/2011/04/01/desenvolver-para-android-persistencia-com-sqlite-ii-outros-metodos-para-o-nosso-crud/


    Cara tem que funcionar se nao tem algo errado no Projeto
    [Email]
    marcelohd02
    Thread.start()
    [Avatar]

    Membro desde: 28/08/2008 12:00:55
    Mensagens: 45
    Offline


    [Email]
    graffiti75
    Debugger

    Membro desde: 03/02/2012 14:24:31
    Mensagens: 74
    Offline

    Opa, valeu pela ajuda Marcelo!

    Darei uma lida nesses links e testarei aqui.
    graffiti75
    Debugger

    Membro desde: 03/02/2012 14:24:31
    Mensagens: 74
    Offline

    Olá Marcelo.

    Sobre os 3 links, sinceramente, eu os achei bastante incompletos.

    Faltam trechos de código e as explicações são meio vagas as vezes. Em algumas partes há trechos de código a serem digitados mas não se sabe em que arquivo .java devem-se digitá-los.

    Para ambos os exemplos (1º, e o 2º e 3º links), quando terminei de copiar os códigos passados pelos tutoriais, o que via na tela era um monte de erros, simplesmente porque faltavam linhas de código ou porque não havia sido explicitada alguma estrutura do layout.

    Tentei baixar o código-fonte do exemplo do Yuri Adams, porém, aquele Github está sempre fora do ar.

    Sigo tentando encontrar um exemplo completo de CRUD em Android, para que enfim eu possa concluir que o manuseamento de Banco de Dados em Android é possível e fácil de ser implementado.
    graffiti75
    Debugger

    Membro desde: 03/02/2012 14:24:31
    Mensagens: 74
    Offline

    Alguém aqui do Guj poderia postar um projeto completo de CRUD em Android? É só isso que peço. Eu daria uma olhada no código-fonte e me viraria. Mas para me virar, preciso ter um exemplo funcional.

    Acho muito mais simples ter o código completo para dar uma olhada do que tutoriais incompletos que nos induzem a completar de forma aleatória os trechos de código que ficam faltando.
    graffiti75
    Debugger

    Membro desde: 03/02/2012 14:24:31
    Mensagens: 74
    Offline

    Depois de 13 tentativas esta noite (estava a 8 horas sem parar tentando), e 22 no total (desde segunda-feira passada), achei um link que resolveu meu problema:

    http://www.androidbrasilprojetos.org/android/introducao-a-banco-de-dados-android/

    Ele realiza um CRUD em Android. E se o banco não existe, o cria. Se existe, o mantém.

    Vou mudar o status do tópido para "resolvido".
     
    Índice dos Fóruns » Google Android e Java Micro Edition (ME)
    Ir para:   
    Powered by JForum 2.1.8 © JForum Team