Expotar Banco de Dados SQLite Android

3 respostas
bancoandroidjava
D

Olá boa tarde. Necessito exportar meu banco de dados SQLite para uma pasta do dispositivo na qual irá ser instalado, e toda vez que eu abrir o aplicativo, o arquivo “.bd” seja atualizado para que no final do mês eu possa convertê-lo para o excel. Só preciso encontrar esse arquivo ou criá-lo porque minha aplicação não está criando uma pasta de arquivos ou um diretório no qual eu possar achar o Data Base File dela. Gostaria de obter um código funcional para exportação desse banco, bem como o passo a passo se possível da estrutura deste código para eventuais erros. OBRIGADO! :smiley:

Eis o meu banco de dados :

public class ProdutosBD extends SQLiteOpenHelper{

private static final String DATABASE ="bdprodutos";
private  static final int VERSION = 1;

public ProdutosBD (Context context){
    super(context, DATABASE,null, VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String produto = "CREATE TABLE produtos(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, matricula INTEGER, supervisao TEXT NOT NULL,  material TEXT NOT NULL, quantidade INTEGER);";
    db.execSQL(produto);

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    String produto = "DROP TABLE IF EXISTS produtos";
    db.execSQL(produto);
}
// aqui salva
public void salvarProduto(Produtos produto){
    ContentValues values = new ContentValues();

    values.put("matricula",produto.getMatricula());
    values.put("supervisao",produto.getSupervisao());
    values.put("material",produto.getMaterial());
    values.put("quantidade",produto.getQuantidade());

    getWritableDatabase().insert("produtos",null,values);
}
// metodo alterar concluído  :D
public void alterarProduto(Produtos produto){
    ContentValues values = new ContentValues();

    values.put("matricula",produto.getMatricula());
    values.put("supervisao",produto.getSupervisao());
    values.put("material",produto.getMaterial());
    values.put("quantidade",produto.getQuantidade());

    String [] args = {produto.getId().toString()};
    getWritableDatabase().update("produtos",values,"id=?",args);

}

public void deletarProduto(Produtos produto){
    String [] args = {produto.getId().toString()};
    getWritableDatabase().delete("produtos","id=?",args);
}

// lista - mostrar

public ArrayList<Produtos> getLista(){
    String [] columns ={"id","matricula","supervisao","material","quantidade"};
    Cursor cursor = getWritableDatabase().query("produtos",columns,null,null,null,null,null,null);
    ArrayList<Produtos> produtos = new ArrayList<Produtos>();

    while (cursor.moveToNext()){
        Produtos produto = new Produtos();
        produto.setId(cursor.getLong(0));
        produto.setMatricula(cursor.getInt(1));
        produto.setSupervisao(cursor.getString(2));
        produto.setMaterial(cursor.getString(3));
        produto.setQuantidade(cursor.getInt(4));

        produtos.add(produto);
    }
    return produtos;
}

3 Respostas

darlan_machado

Até onde lembro, você tem acesso a leitura. Pode criar uma rotina que faça a leitura em todas as tabelas do teu app e salvar em um arquivo à parte.
Não?

D

Acredito que sim, mas não conheço muito sobre a integração do banco de dados com o meio externo do android, poderia me ajudar a criar essa rotina?

T

Bom dia!
Já tive está dúvida é consegui resolver com um código bem simples.
Ele pega todo o seu banco e exporta para um arquivo de excel.

btnExport.setOnClickListener(new View.OnClickListener() {  
        @Override  
        public void onClick(final View view) {  
            String directory_path = Environment.getExternalStorageDirectory().getPath() + "/Backup/";  
            File file = new File(directory_path);  
            if (!file.exists()) {  
                file.mkdirs();  
            }  
            // Export SQLite DB as EXCEL FILE  
            SQLiteToExcel sqliteToExcel = new SQLiteToExcel(getApplicationContext(), DBHelper.DB_NAME, directory_path);  
            sqliteToExcel.exportAllTables("users.xls", new SQLiteToExcel.ExportListener() {  
                @Override  
                public void onStart() {  

                }  

                @Override  
                public void onCompleted(String filePath) {  
                    Utils.showSnackBar(view, "Successfully Exported");  
                }  

                @Override  
                public void onError(Exception e) {  

                }  
            });  
        }  
    });

Espero poder ajudar.

Criado 27 de fevereiro de 2018
Ultima resposta 6 de jun. de 2018
Respostas 3
Participantes 3