2013-07-29 2 views
0

Или вам нужно сделать это самостоятельно? Я всегда предполагал, что это так, но пользователи сообщают о ошибках, которые не согласуются с этим, но не делают этого. Документы не ясны по этому поводу.Действительно ли метод SQLiteOpenHelper onUpgrade изменяет версию базы данных?

ответ

0

Вам не обязательно делать это самостоятельно.

Как можно видеть в source code of SQLiteOpenHelper, версия базы данных автоматически изменяется после перегрузки метода onCreate/onUpgrade/onDowngrade был успешно выполнен:

   if (version == 0) { 
        onCreate(db); 
       } else { 
        if (version > mNewVersion) { 
         onDowngrade(db, version, mNewVersion); 
        } else { 
         onUpgrade(db, version, mNewVersion); 
        } 
       } 
       db.setVersion(mNewVersion); 
       db.setTransactionSuccessful(); 
+0

Fantastic! Тот, кто действительно знает, о чем он говорит. –

+0

Почему была бы изменена версия db в методе onCreate()? –

+0

@IgorGanapolsky Версия не изменена в on create(). –

1

Нет, это не так. Метод onUpgrade вызывается, когда версия БД отличается от версии, указанной в SqliteOpenHelper.

http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html#onUpgrade(android.database.sqlite.SQLiteDatabase, int, int) 

Из подписи, вы получите старую версию текущей БД и новую версию, которую вы пытаетесь обновить. Обычно тот, который вы указываете. Вы должны помнить, что пользователи не всегда обновляют каждое приложение, которое вы выпускаете, поэтому вам нужно постоянно менять скрипты для обновления нескольких версий.

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