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 android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to