This is my database name from assets folder, I saw someone say that assets is not writable.
public class DatabaseAssets_Milestones extends SQLiteOpenHelper {
private static String dbName = "milestones.db";
Context context;
File dbFile;
This is my Constructor.
public DatabaseAssets_Milestones(@Nullable Context context) {
super(context, dbName, null, 2);
this.context = context;
File DB_PATH = context.getDatabasePath(dbName);
String db = DB_PATH.getAbsolutePath();
dbFile = new File(db);
if(!dbFile.exists()){
if (!dbFile.getParentFile().exists()) {
dbFile.mkdirs();
}
copyDataBase(dbFile.getPath());
}
}
This is my copy database method.
private void copyDataBase(String dbPath){
try{
InputStream assetDB = context.getAssets().open("databases/"+"milestones.db");
OutputStream appDB = new FileOutputStream(dbPath,false);
byte[] buffer = new byte[1024];
int length;
while ((length = assetDB.read(buffer)) > 0) {
appDB.write(buffer, 0, length);
}
appDB.flush();
appDB.close();
assetDB.close();
}catch(IOException e){
e.printStackTrace();
}
}
@Override
public void onCreate(SQLiteDatabase db) {
}
Am I missing something here? Or was it something in my other code?
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + dbName);
onCreate(db);
}
}