Generally onUpgrade is used to change the database structure. Adding new 
data is normally done as part of the regular program runs.

On Sunday, June 3, 2012 8:53:09 AM UTC-4, RawCoder wrote:
>
> Actually I need to add some new data to all the databases and want to keep 
> the previous data inserted by the user. Now the problem is in the 
> onUpgrade() method i get only one db as a input parameter so how can i get 
> the previous data of  user of other db.
>
>
> On Sun, Jun 3, 2012 at 12:04 AM, lbendlin <l...@bendlin.us> wrote:
>
>> 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
>
>
>

-- 
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