How can i update my sqlite database without need for uninstalling my android application. I build my db with the database manager named 'Sqlite Expert'... and copy the result to the assets folder of my project. Here is my Database.java to do database job:
public class Database extends SQLiteOpenHelper {
private static final String dbInstallationPath = "/data/data/com.example.asus.android/databases/";
private static final String dbName = "database";
private static final int dbVersion = 2;
private final Context mycontext;
public SQLiteDatabase mydb;
public Database(Context context) {
super(context, dbName, null, dbVersion);
mycontext = context;
}
@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generated method stub
Log.d("oncreate", "oncreated was called..s");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + "content");
onCreate(db);
try {
copydatabase();
} catch (IOException e) {
e.printStackTrace();
}
Log.d("databaseupdate", "db was updaatedd.");
}
public void usable() {
if (checkdb()) {
} else {
this.getReadableDatabase();
try {
copydatabase();
Log.d("copy successful", "conpy done! dsyccesful...");
} catch (IOException e) {
Log.d("copydatabase()", "IOExcptons fFor copyyingdatabasde");
}
}
Log.d("usable", "usable called.");
}
public void open() {
mydb = SQLiteDatabase.openDatabase(dbInstallationPath + dbName, null, SQLiteDatabase.OPEN_READWRITE);
}
public void close() {
mydb.close();
}
public boolean checkdb() {
SQLiteDatabase db = null;
try {
db = SQLiteDatabase.openDatabase(dbInstallationPath + dbName, null, SQLiteDatabase.OPEN_READONLY);
} catch (SQLException e) {
Log.d("new", "the database coudlnt be opened..fghf");
}
return db != null ? true : false;
}
public void copydatabase() throws IOException {
OutputStream myOutput = new FileOutputStream(dbInstallationPath + dbName);
byte[] buffer = new byte[1024];
int length;
InputStream myInput = mycontext.getAssets().open(dbName);
while ((length = myInput.read(buffer)) > 0) {
myOutput.write(buffer, 0, length);
}
myInput.close();
myOutput.flush();
myOutput.close();
}