2013-06-07 3 views
0

Я новичок в Android и базы данных, у меня есть этот метод в DatabaseIncomeOutcome.java классе:Как запускается onUpgrade?

public DbHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
     db.execSQL("CREATE TABLE IF NOT EXISTS " + DATABASE_TABLE + "(" + 
     KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
     KEY_IO + " TEXT NOT NULL, " + 
     KEY_NOTE + " TEXT NOT NULL);" 
     ); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 
     db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); 
     onCreate(db); 
    } 

} 

public DatabaseIncomeOutcome(Context c){ 
    ourContext = c; 
} 

public DatabaseIncomeOutcome open(){ 
    ourHelper = new DbHelper(ourContext); 
    ourDatabase = ourHelper.getWritableDatabase(); 
    return this; 

, когда я назвал метод из другого класса

  DatabaseIncomeOutcome entry = new DatabaseIncomeOutcome(this); 
      entry.open(); 

Как и когда onUpgrade называется? Вызывается ли он каждый раз, когда я выполняю команду entry.open()?

Я также хочу, чтобы добавить этот скрипт

if (newVersion > oldVersion) { 
    db.execSQL("ALTER TABLE foo ADD COLUMN new_column INTEGER DEFAULT 0"); 

на onUpgrade добавить новый столбец,

Тогда, как я должен вызвать `onUpgrade», так что я мог бы добавить новый столбец, если я мог бы это необходимо для будущего развития.

Спасибо ...

ответ

2

Путь onUpgrade метод вызывается для андроид базы данных на основе DATABASE_VERSION вы передаете, когда версия вашего следующего кода отличается, чем тот, в настоящее время установлен, то onUpgrade будет называться , давая вам возможность изменить ситуацию в вашей схеме базы данных ...

Обратите внимание, что этот метод не является чем-то, что вы вручную вынуждаете вызывать, он будет автоматически вызван ОС, когда произойдет описанное выше событие ...

С уважением!

+1

Спасибо ... Это сработало !!! Я также узнал из http://stackoverflow.com/questions/7647566/why-is-onupgrade-not-being-invoked-on-android-sqlite-database, что onUpgrade выполнен из SQLiteOpenHelper.getWritableDatabase() ... И это срабатывает, когда мы меняем значение DATABASE_VERSION ... – Tutompita

Смежные вопросы