Reparar Banco de Dados Corrompido pela Aplicação

456 views
Skip to first unread message

Felipe Costa

unread,
Feb 8, 2013, 11:58:55 AM2/8/13
to androidb...@googlegroups.com
Prezados,

Ao abrir uma conexão com o banco de dados utilizando o seguinte metodo openOrCreateDatabase(enderecoBanco,Context.MODE_WORLD_WRITEABLE , null), estou recebendo a seguinte exeção "erro code 11:database disk image is malformed", sendo que por algum motivo o banco de dados foi corrompido, é possivel realizar algum procedimento para reparar esta banco de dados pela aplicação?


--
Att,
Felipe Costa

Felipe Costa

unread,
Feb 13, 2013, 11:09:14 AM2/13/13
to androidb...@googlegroups.com
Pessoal,

Verifiquei em alguns topicos que é possivel atraves de linha de comando:

String strExeCmd = "sqlite3 "+enderecoBanco+" .dump | sqlite3 "+enderecoBanco;
Process process = Runtime.getRuntime().exec(strExeCmd);
process.waitFor();

Alguem poderia me auxiliar?

Alex Baule

unread,
Feb 13, 2013, 4:43:54 PM2/13/13
to androidb...@googlegroups.com
vc tem q ter o executavel do sqlite3 no celular

E se está "database disk image is malformed, possivelmente vc nao conseguirá recuperar.

O que vc pode fazer é copiar o banco pro PC e abri-lo. (que tbem nao irá conseguir se for realmente  "database disk image is malformed"):




--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Felipe Costa

unread,
Feb 14, 2013, 4:56:33 AM2/14/13
to androidb...@googlegroups.com
Ola Alex,

Em alguns tutoriais encontrei a seguinte solução:

public bancoDeDados(Context context) throws Exception {
        try{
            db = context.openOrCreateDatabase(enderecoBanco,Context.MODE_WORLD_WRITEABLE , null);
            Log.d("BANCO DADOS", "Conexão com o banco de dados OK");
        }catch (SQLiteDatabaseCorruptException e) {
            // TODO: handle exception
            REPARAR BD CORROMPIDO

            String strExeCmd = "sqlite3 "+enderecoBanco+" .dump | sqlite3 "+enderecoBanco;
            Process process = Runtime.getRuntime().exec(strExeCmd);
            process.waitFor(); 
        }
        catch (Exception e) {
            throw new Exception("BancoDeDados_Exception:"+e.getMessage());
        }
}

Porem estou achando que o problema pode estar na linha de comando "strExeCmd"...
--
Att,
Felipe Costa
Reply all
Reply to author
Forward
0 new messages