2
respostas

Erro ao inserir dados no SQLite

03-29 18:47:05.988 32070-32070/br.com.alura.agenda E/SQLiteDatabase: Error inserting caminhoFoto=null nome=Jhon nota=10.0 id=d3d03c23-63a5-4332-aa7f-86665e3c7e2d endereco=oi site=sjdud telefone=2838
    android.database.sqlite.SQLiteDatatypeMismatchException: datatype mismatch (code 20)
        at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method)
        at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:791)
        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:1501)
        at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1371)
        at br.com.alura.agenda.dao.AlunoDAO.insere(AlunoDAO.java:96)
        at br.com.alura.agenda.dao.AlunoDAO.sincroniza(AlunoDAO.java:175)
        at br.com.alura.agenda.ListaAlunosActivity$3.onResponse(ListaAlunosActivity.java:87)
        at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70)
        at android.os.Handler.handleCallback(Handler.java:815)
        at android.os.Handler.dispatchMessage(Handler.java:104)
        at android.os.Looper.loop(Looper.java:194)
        at android.app.ActivityThread.main(ActivityThread.java:5637)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)

Quero saber, porque estou recebendo esse erro, já repeti muitas vezes os vídeos e vi os textos disponíveis das aulas, porém não consigo resolver.

2 respostas

Oi Venancio,

O id que aparece na primeira linha está com um valor estranho.

Por gentileza, posta pra gente o código do método AlunoDAO.insere pra gente ver o que está sendo atribuido.

    public void insere(Aluno aluno) {
        SQLiteDatabase db = getWritableDatabase();
        insereIdSeNecessario(aluno);
        ContentValues dados = pegaDadosDoAluno(aluno);
        db.insert("Alunos", null, dados);
    }

Está ai o método.