Export Sqlite Android Database

Asked

Viewed 209 times

1

I need to export my database Sqlite to a folder on the device on which it will be installed, and every time I open the application, the file ". bd" be updated so that at the end of the month I can convert it to Excel. I just need to find this file or create it because my application is not creating a file folder or a directory in which I can find the Data Base File hers.

I would like to obtain a functional code for export from that bank, as well as step by step, if possible, of the structure of this code for possible errors.

Here is my database:

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;
}



}
  • In fact DATABASE you can put the complete path where you want to save your database, ex: DATABASE = Environment.getExternalStorageDirectory().getPath().concat("/database.db"), but it is necessary to have the permission WRITE_EXTERNAL_STORAGE

  • The way you are doing, Android will save the database in an internal folder and only devices with root, will be able to access.

  • OK Valdeir, thank you very much. I will try and return :D

  • Okay, another question friend: how will I know in which folder the "/bdprodutos.db" was saved?

  • Environment.getExternalStorageDirectory().getPath() returns the memory card path. In the above example, it saves at the root of the card. Or you can use Environment.html.getExternalStoragePublicDirectory

  • Is there a specific place to put the apk file at the time of installation? Because in relation to the code I am doing this way DATABASE = Environment.getExternalStorageDirectory(). getPath(). Concat("Card Android data/bdprodutos.db") and is not working.

Show 1 more comment

1 answer

0


In fact DATABASE you can put the complete path where you want to save your database. Example:

private static final String DATABASE = Environment.getExternalStorageDirectory().getPath() +
            File.separator + "path" +
            File.separator + "to" +
            File.separator + "database.db";

This way your database will be created in /sdcard/path/to/database.db

  • The problem is that this constant receiving "bdproducts" as it is in the code, is currently called: public Productosbd (Context context){ super(context, DATABASE,null, VERSION); } "bdprodutos" to make the app work. Thus, I believe I will have to assign two values for this constant. One for the Sqlite itself be created in the app, and another for the export. It is possible?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.