jeudi 17 décembre 2015

SQLite database backup truoble using BackupAgent

I made class DBHelper(Note:GeneralPath - singletone with String variable "path"). This works. Inside constructor of DBHelper i send variable with SQLiteDatabase path to variable in singletone (later in BackupAgentHelper i get this variable)

 public  class DBHelper extends SQLiteOpenHelper  {
    GeneralPath generalPath;
    public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, Constants.DATABASE_FILE_NAME, factory, Constants.DATABASE_VERSION_1);
         generalPath = GeneralPath.getInstance();
         SQLiteDatabase db = getReadableDatabase();
         generalPath.setPath(db.getPath());
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
        String query = "CREATE TABLE " + Constants.PERSONS_TABLE_NAME + "(" +
                "" + Constants.TABLE_COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
                "" + Constants.TABLE_COLUMN_FOR_NAME + " TEXT, "+
                "" + Constants.TABLE_COLUMN_FOR_INFO + " TEXT )";
        db.execSQL(query);
        generalPath.setPath(db.getPath());
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db = getWritableDatabase();
        db.execSQL("DROP TABLE IF EXISTS " + Constants.PERSONS_TABLE_NAME);
        onCreate(db);
        generalPath.setPath(db.getPath());
    }

public void addPerson (Person person) {
    ContentValues values = new ContentValues();
    values.put(Constants.TABLE_COLUMN_FOR_NAME, person.getName());
    values.put(Constants.TABLE_COLUMN_FOR_INFO, person.getDescription());
    SQLiteDatabase db = getWritableDatabase();
    db.insert(Constants.PERSONS_TABLE_NAME, null, values);

}

public List getPersonsList (){

    List <Person> persons = new ArrayList<>();
    SQLiteDatabase db = getReadableDatabase();
    String query = " SELECT * FROM " + Constants.PERSONS_TABLE_NAME;
    Cursor cursor = db.rawQuery(query, null);
    cursor.moveToFirst();

    while (!cursor.isAfterLast()){
        if(cursor.getString(cursor.getColumnIndex(Constants.TABLE_COLUMN_FOR_NAME))!=null){
            Person person = new Person(null, null);
            person.setName(cursor.getString(cursor.getColumnIndex(Constants.TABLE_COLUMN_FOR_NAME)));
            person.setDescription(cursor.getString(cursor.getColumnIndex(Constants.TABLE_COLUMN_FOR_INFO)));
            persons.add(person);
            cursor.moveToNext();

        }
    }

    db.close();
   return persons;
}

then i made Class DataBackupAgent class to backup.

 public class DataBackupAgent extends BackupAgentHelper {
GeneralPath generalPath;


@Override
public void onCreate() {
    super.onCreate();
    generalPath = GeneralPath.getInstance();
    FileBackupHelper dbs = new FileBackupHelper(this, generalPath+ Constants.DATABASE_FILE_NAME);
    addHelper("dbs", dbs);
}

public static void requestBackup(Context context) {
    BackupManager backupManager = new BackupManager(context);
    backupManager.dataChanged();

}

Nothing happening when i call requestBackup

Aucun commentaire:

Enregistrer un commentaire