转换数据库.db文件到.CSV数据库、文件、db、CSV

2023-09-13 00:51:50 作者:我是深海请你溺水

我正在开发中,我使用的数据库和存储与.db的延伸到SD卡的数据库文件的应用程序。现在我想这个数据库文件为.csv文件进行转换,使用户可以打开的.csv文件,并可以很容易地就能看到它的全部数据...

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...

推荐答案

嘿,我有我自己的问题的答案:我下载了一个库OpenCSV并添加opencsv.jar文件到我的应用程序,并在跌破code:

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