what exactly do you need to upgrade? Can't you just run a few scripts in
onUpgrade ?
On Saturday, June 2, 2012 8:02:22 AM UTC-4, RawCoder wrote:
>
> Hi guys,
>
> I am working on an android application where i have to use multiple
> databases. I have used previously created db file. Actually i am copying
> the db file from asset folder.
> Now there is option to add data for the user(add favorites). The user data
> will be added in all three db.
>
> Now the problem is i need to upgrade all the db when there is a new
> version of the app. I have to keep the user data inserted by the user and
> add the changes of the new db.
> I have done some googling and find solution to upgrade one db but i can
> not find a solution to upgrade all the databases and keep the old versions
> user data.
>
> Here is my dbhelper class:
>
>
> //////////////////////////////////////////////////////////////////////////////////////////////////
> package riskycoder.database.helper;
>
> import java.io.FileOutputStream;
> import java.io.IOException;
> import java.io.InputStream;
> import java.io.OutputStream;
> import java.util.Locale;
>
> import riskycoder.utils.AppStaticValues;
>
> import android.content.Context;
> import android.database.Cursor;
> import android.database.SQLException;
> import android.database.sqlite.SQLiteDatabase;
> import android.database.sqlite.SQLiteException;
> import android.database.sqlite.SQLiteOpenHelper;
> import android.util.Log;
>
> public class DataBaseHelper extends SQLiteOpenHelper {
> private static String DB_PATH = "/data/data/riskycoder.login/databases/";
> public static String DB_NAME = "datenbank_EN.sqlite";
> private SQLiteDatabase myDataBase;
> private final Context myContext;
> private static final int DATABASE_VERSION = 1;
> private static final String DB_NAME_ENG = "datenbank_EN.sqlite";
> private static final String DB_NAME_GER = "datenbank_DE.sqlite";
> private static final String DB_NAME_SPA = "datenbank_SP.sqlite";
> private Cursor updateCursor;
>
> public static void setDataBaseName(String lan)
> {
> if(lan.equals("ENG"))
> {
> DB_NAME=DB_NAME_ENG;
> }
> else if(lan.equals("GER"))
> {
> DB_NAME=DB_NAME_GER;
> }
> else if(lan.equals("SPA"))
> {
> DB_NAME=DB_NAME_SPA;
> }
> }
> public DataBaseHelper(Context context) {
> super(context, DB_NAME, null, DATABASE_VERSION);
> this.myContext = context;
> updateCursor=null;
> }
>
> public void createDataBase() throws IOException {
> boolean dbExist = checkDataBase();
> if (dbExist) {
> this.getWritableDatabase();
> } else {
> this.getWritableDatabase();
> try {
> this.close();
> 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) {
> }
> if (checkDB != null)
> checkDB.close();
> return checkDB != null ? true : false;
> }
>
> private void copyDataBase() throws IOException {
>
> InputStream myInput = myContext.getAssets().open(DB_NAME);
> String outFileName = DB_PATH + DB_NAME;
> OutputStream myOutput = new FileOutputStream(outFileName);
> byte[] buffer = new byte[2048];
> int length;
> while ((length = myInput.read(buffer)) > 0) {
> myOutput.write(buffer, 0, length);
> }
> myOutput.flush();
> myOutput.close();
> myInput.close();
> //myDataBase.setVersion(DATABASE_VERSION);
> }
>
> public void openDataBase() throws SQLException {
> String myPath = DB_PATH + DB_NAME;
> myDataBase = SQLiteDatabase.openDatabase(myPath,
> null,SQLiteDatabase.OPEN_READWRITE);
> Log.d("Test", "Database version: " +myDataBase.getVersion());
> if(updateCursor!=null && updateCursor.getCount()!=0)
> {
> updateCursor.moveToFirst();
> do{
> myDataBase.execSQL("UPDATE Content SET is_favourite='1' WHERE
> content_id
> ='"+updateCursor.getInt(updateCursor.getColumnIndex("content_id"))+"' AND
> category_id =
> '"+updateCursor.getInt(updateCursor.getColumnIndex("category_id"))+"'");
> }while(updateCursor.moveToNext());
> updateCursor.close();
> }
> }
>
> @Override
> public synchronized void close() {
> if (myDataBase != null)
> myDataBase.close();
> super.close();
> }
> public Cursor Get_Header_Cursor(){
> Cursor cursor;
> cursor = myDataBase.rawQuery("select * from Headers ORDER BY
> header_orderId",null);
> return cursor;
> }
> public Cursor Get_Group_Cursor(int id){
> Cursor cursor = myDataBase.rawQuery("select * from Categories where
> header_id = "+id+" ORDER BY category_orderId",null);
> return cursor;
> }
> public Cursor Get_Content_Cursor(int id){
> Cursor cursor = myDataBase.rawQuery("select * from Content where
> category_id = "+id,null);
> return cursor;
> }
>
> public Cursor Get_Favourite_Cursor(){
> Cursor cursor = myDataBase.rawQuery("select * from Content where
> is_favourite = 1",null);
> return cursor;
> }
>
> @Override
> public void onCreate(SQLiteDatabase db) {
> }
>
> @Override
> public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
> if(newVersion>oldVersion)
> {
> updateCursor = db.rawQuery("select * from Content where is_favourite =
> 1",null);
> Log.d("Test", "is fav"+updateCursor.getCount());
> try {
> copyDataBase();
> } catch (IOException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> }
>
> }
> }
>
>
> ///////////////////////////////////////////////////////////////////////////////////////////////////////
>
> Please help how to upgrade all the databases.......
>
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en