lundi 2 mai 2016

trying to export data from sqlite database to csv/excel file in android

I have looked at some similar questions on here but can't figure out how to make this work for my problem. I have made a workout application and would like to allow the user to export the data in the database to a csv or excel file. I have got some code from online but know it is not right, could anyone give me some advice on how to go about this. If i need to give anymore info please let me know. Thanks

Here is my ExportDatabaseCSVTask class:

public class ExportDatabaseCSVTask extends HomeScreen {
private final ProgressDialog dialog = new ProgressDialog(ExportDatabaseCSVTask.this);
@Override
protected void onPreExecute() {

    this.dialog.setMessage("Exporting database...");
    this.dialog.show();

}
protected String doInBackground(final String... args){


    File exportDir = new File(Environment.getExternalStorageDirectory(), "");
    if (!exportDir.exists()) {
        exportDir.mkdirs();
    }

    File file = new File(exportDir, "ExcelFile.csv");
    try {

        file.createNewFile();
        CSVWriter csvWrite = new CSVWriter(new FileWriter(file));

        //data

        //Headers
       //database info in here??

        csvWrite.close();
        return "";
    }
    catch (IOException e){
        Log.e("MainActivity", e.getMessage(), e);
        return "";
    }
}

@SuppressLint("NewApi")
@Override
protected void onPostExecute(final String success) {

    if (this.dialog.isShowing()){
        this.dialog.dismiss();
    }
    if (success.isEmpty()){
        Toast.makeText(ExportDatabaseCSVTask.this, "Export successful!", Toast.LENGTH_SHORT).show();
    }
    else {
        Toast.makeText(ExportDatabaseCSVTask.this, "Export failed!", Toast.LENGTH_SHORT).show();
    }
}
}

here is my DBAdapter class:

public class DBAdapter {

public static final String KEY_ROWID = "_id";
public static final String KEY_TITLE = "title";
public static final String KEY_WORKOUTDATE = "workoutDate";
public static final String KEY_EXERCISE_NOTES = "notes";

private static final String TAG = "WorkoutDBAdapter";
private DatabaseHelper mDBHelper;
private SQLiteDatabase mdb;

private static final String DATABASE_NAME = "WorkoutDB";
private static final String DATABASE_TABLE = "workouts";
private static final int DATABASE_VERSION = 2;

private final Context mCtx;

private static final String DATABASE_CREATE =
        "create table if not exists workouts " +
                "(_id integer primary key autoincrement, " +
                "title VARCHAR not null, " +
                "workoutDate date, " +
                "notes VARCHAR );";

private static class DatabaseHelper extends SQLiteOpenHelper {

    DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.w(TAG, DATABASE_CREATE);
        db.execSQL(DATABASE_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS workouts");
        onCreate(db);
    }
}


public DBAdapter(Context ctx) {
    this.mCtx = ctx;
}


public DBAdapter open() throws SQLException {
    mDBHelper = new DatabaseHelper(mCtx);
    mdb = mDBHelper.getWritableDatabase();
    return this;
}

public void close() {
    if (mDBHelper != null) {
        mDBHelper.close();
    }
}

//---insert a record into the database---
public long insertRecord(String title, String workoutdate, String notes) {
    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_TITLE, title);
    initialValues.put(KEY_WORKOUTDATE, workoutdate);
    initialValues.put(KEY_EXERCISE_NOTES, notes);

    return mdb.insert(DATABASE_TABLE, null, initialValues);
}


//---retrieves all the records---
public Cursor getAllRecords() {
    Cursor mCursor = mdb.query(DATABASE_TABLE, new String[]{KEY_ROWID, KEY_TITLE,
            KEY_WORKOUTDATE, KEY_EXERCISE_NOTES}, null, null, null, null, null);

    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}

public boolean deleteRow(long rowId) {
    String where = KEY_ROWID + "=" + rowId;
    return mdb.delete(DATABASE_TABLE, where, null) != 0;

}
}

Aucun commentaire:

Enregistrer un commentaire