mardi 10 février 2015

SQLite Database on SDCard

I would like to store the SQLite database on sdcard instead of the internal memory. I serched a lot on google but I didn't find an answer. This is the sqliteopenhelper



public class RegistrationOpenHelper extends SQLiteOpenHelper{
public static final String DATABASE_NAME = "REGISTRATION_DB";
public static final String TABLE_NAME = "REGISTRATION_TABLE";
public static final int VERSION = 1;
public static final String KEY_ID = "_id";
public static final String FNAME = "F_NAME";
public static final String LNAME = "L_NAME";
public static final String FILE_DIR = "/sdcard/Leonardo";
public static final String DESC = "DESC";
public static final String SCRIPT = "create table " + TABLE_NAME + " ("
+ KEY_ID + " integer primary key autoincrement, " + FNAME
+ " text not null, " + DESC + " text not null, " + LNAME +" text not null );";
public RegistrationOpenHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
SQLiteDatabase.openOrCreateDatabase(Environment.getExternalStorageDirectory()
+ File.separator + FILE_DIR
+ File.separator + DATABASE_NAME, null);

}

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(SCRIPT);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("drop table " + TABLE_NAME);
onCreate(db);
}
}


and this is my Adapter



public class RegistrationAdapter {
SQLiteDatabase database_ob;
RegistrationOpenHelper openHelper_ob;
Context context;



public RegistrationAdapter(Context c) {
context = c;
}

public RegistrationAdapter opnToRead() {
openHelper_ob = new RegistrationOpenHelper(context,openHelper_ob.DATABASE_NAME,
null, openHelper_ob.VERSION);
database_ob = openHelper_ob.getReadableDatabase();
return this;


}
public RegistrationAdapter opnToWrite() {
openHelper_ob = new RegistrationOpenHelper(context,
openHelper_ob.DATABASE_NAME, null, openHelper_ob.VERSION);
database_ob = openHelper_ob.getWritableDatabase();
return this;

}


public void Close() {
database_ob.close();
}

public long insertDetails(String fname, String desc, String lname) {
ContentValues contentValues = new ContentValues();
contentValues.put(openHelper_ob.FNAME, fname);
contentValues.put(openHelper_ob.DESC, desc);
contentValues.put(openHelper_ob.LNAME, lname);
opnToWrite();
long val = database_ob.insert(openHelper_ob.TABLE_NAME, null,
contentValues);
Close();
return val;
}

public Cursor queryName() {
String[] cols = { openHelper_ob.KEY_ID, openHelper_ob.FNAME, openHelper_ob.DESC,
openHelper_ob.LNAME };
opnToWrite();
Cursor c = database_ob.query(openHelper_ob.TABLE_NAME, cols, null,
null, null, null, null);

return c;
}

public Cursor queryAll(int nameId) {
String[] cols = { openHelper_ob.KEY_ID, openHelper_ob.FNAME, openHelper_ob.DESC,
openHelper_ob.LNAME };
opnToWrite();
Cursor c = database_ob.query(openHelper_ob.TABLE_NAME, cols,
openHelper_ob.KEY_ID + "=" + nameId, null, null, null, null);

return c;

}

public long updateldetail(int rowId, String fname, String desc, String lname) {
ContentValues contentValues = new ContentValues();
contentValues.put(openHelper_ob.FNAME, fname);
contentValues.put(openHelper_ob.DESC, desc);
contentValues.put(openHelper_ob.LNAME, lname);
opnToWrite();
long val = database_ob.update(openHelper_ob.TABLE_NAME, contentValues,
openHelper_ob.KEY_ID + "=" + rowId, null);
Close();
return val;
}
public int deletOneRecord(int rowId) {
// TODO Auto-generated method stub
opnToWrite();
int val = database_ob.delete(openHelper_ob.TABLE_NAME,
openHelper_ob.KEY_ID + "=" + rowId, null);
Close();
return val;
}
public Cursor GetOneNote(long id) {
return database_ob.query(openHelper_ob.TABLE_NAME, null, openHelper_ob.KEY_ID + "=" + id, null, null,
null, null);
}


}


How can I store it in sd? I've tried using openOrCreateDatabase but it only create the database but inside is empty.


Aucun commentaire:

Enregistrer un commentaire