• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps check database exist and copy from asset folder

zalani

Lurker
public static final String TAG = "DatabaseHelper";
private static String DB_PATH = "/data/data/PACKAGENAME/databases/";
private static String DB_NAME = "DATABASENAME.sqlite";
public static final int DB_Version = 1;

private final Context myContext;
private static SQLiteDatabase myDB;

public void createDataBase() throws IOException {
boolean dbExist = checkDataBase();
if (dbExist) {
// do nothing - database already exist
} else {
// By calling this method and empty database will be created
// into the default system path
// of your application so we are gonna be able to overwrite that
// database with our database.
this.getReadableDatabase();
try {
copyDataBase();
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}

private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
try {
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null,
SQLiteDatabase.OPEN_READWRITE);
} catch (SQLiteException e) {
// database does't exist yet.
}

if (checkDB != null) {
checkDB.close();
}
return checkDB != null ? true : false;
}

private void copyDataBase() throws IOException {
// Open your local db as the input stream
InputStream myInput = myContext.getAssets().open(DB_NAME);
// Path to the just created empty db
String outFileName = DB_PATH + DB_NAME;
// Open the empty db as the output stream
OutputStream myOutput = new FileOutputStream(outFileName);
// transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
// Close the streams
myOutput.flush();
myOutput.close();
myInput.close();
}
 
Please put your code inside of CODE tags for easier reading.

What problem are you having? Are you getting an exception? If so, can you post the logcat output?
 
Back
Top Bottom