2
respostas

android.database.sqlite.SQLiteDatatypeMismatchException: datatype mismatch (code 20)

Sempre que tento executar o aplicativo da agenda de alunos recebo um erro no momento de recuperar os dados do webservice. O erro é o seguinte:

E/SQLiteLog: (20) statement aborts at 5: [INSERT INTO Alunos(telefone,site,endereco,caminhoFoto,nome,id,nota) VALUES (?,?,?,?,?,?,?)] datatype mismatch
E/SQLiteDatabase: Error inserting telefone=87988230285 site=www.alura.com.br endereco=Rua do Caruru, bairro Areia branca, Petrolina-PE caminhoFoto=/storage/emulated/0/Android/data/br.com.estudos.dioge.agenda/files/1513706873933.jpg nome=Diogenes id=05b9f805-f471-4231-a7cc-770effcda691 nota=10.0
                  android.database.sqlite.SQLiteDatatypeMismatchException: datatype mismatch (code 20)
                      at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
                      at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:782)
                      at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788)
                      at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86)
                      at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1474)
                      at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1343)
                      at br.com.estudos.dioge.agenda.DAO.AlunoDAO.insere(AlunoDAO.java:97)
                      at br.com.estudos.dioge.agenda.DAO.AlunoDAO.sincroniza(AlunoDAO.java:177)
                      at br.com.estudos.dioge.agenda.ListaAlunosActivity$3.onResponse(ListaAlunosActivity.java:89)
                      at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70)
                      at android.os.Handler.handleCallback(Handler.java:789)
                      at android.os.Handler.dispatchMessage(Handler.java:98)
                      at android.os.Looper.loop(Looper.java:164)
                      at android.app.ActivityThread.main(ActivityThread.java:6541)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

E ele se repete para todos os alunos. PS: Encontrei um tópico com o mesmo problema e cheguei a testar a solução que foi colocada lá, mas não funcionou no meu.

2 respostas

Oi Diogenes,

Pode postar o código da sua classe AlunoDAO para darmos uma olhada?

Abraço!

Desculpe a demora para responder, estava viajando e só voltei recentemente. Aqui está o link para a classe AlunoDAO: https://gist.github.com/anonymous/35a9ddf79805c64829e76822bf29180c