Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert database .db file into .csv

Tags:

android

sqlite

I am developing an application in which I am using database and storing that database file with .db extention into sdcard .. Now I want to convert this "db file into .csv", so that the user can open that .csv file and can easily able to see all its data...

like image 318
Kanika Avatar asked Dec 29 '11 07:12

Kanika


1 Answers

Hey I got the answer of my own question: I downloaded a library OpenCSV and added opencsv.jar file into my application and the below code:

class ExportDatabaseCSVTask extends AsyncTask<String, Void, Boolean>{
    private final ProgressDialog dialog = new ProgressDialog(MyDatabaseActivity.this);

    // can use UI thread here
    @Override
    protected void onPreExecute(){
        this.dialog.setMessage("Exporting database...");
        this.dialog.show();
    }


    // automatically done on worker thread (separate from UI thread)
    protected Boolean doInBackground(final String... args){
        File dbFile=getDatabasePath("mydb.db");
        //  DbClass DBob = new DbClass(MyDatabaseActivity.this);
        File exportDir = new File(Environment.getExternalStorageDirectory(), "");
        if (!exportDir.exists()) {
            exportDir.mkdirs();
        }
        File file = new File(exportDir, "excerDB.csv");
        try {
            file.createNewFile();
            CSVWriter csvWrite = new CSVWriter(new FileWriter(file));
            //SQLiteDatabase db = DBob.getReadableDatabase();
            Cursor curCSV=mydb.rawQuery("select * from " + TableName_ans,null);
            //  Cursor curCSV = db.rawQuery("SELECT * FROM table_ans12",null);
            csvWrite.writeNext(curCSV.getColumnNames());

            while(curCSV.moveToNext()){
                String arrStr[] ={curCSV.getString(0),curCSV.getString(1)};
                    /*curCSV.getString(2),curCSV.getString(3),curCSV.getString(4)*/
                csvWrite.writeNext(arrStr);
            }

            csvWrite.close();
            curCSV.close();
            return true;

        } catch(SQLException sqlEx) {
            Log.e("MainActivity", sqlEx.getMessage(), sqlEx);
            return false;
        } catch (IOException e) {
            Log.e("MainActivity", e.getMessage(), e);
            return false;
        }
    }

    // can use UI thread here
    @Override
    protected void onPostExecute(final Boolean success) {
        if (this.dialog.isShowing()) {
            this.dialog.dismiss();
        }
        if (success) {
            Toast.makeText(MyDatabaseActivity.this, "Export successful!", Toast.LENGTH_SHORT).show();
        }  else {
            Toast.makeText(MyDatabaseActivity.this, "Export failed", Toast.LENGTH_SHORT).show();
        }
    }
}
like image 126
Kanika Avatar answered Oct 20 '22 09:10

Kanika