2015-02-27 2 views
0

Есть некоторые проблемы, которые я действительно не знаю, как их решить. Я сохранил TimeStamp в моей базе данных SQLite как String (не очень умный ;-)), и знаю, что мне нужно преобразовать это в миллисекундную репрезентацию как длинную в базе данных. Причиной этого является то, что я хочу получить TimeStamp и представить его правильно в соответствии с локалью устройств.Android onUpgrade, изменение структуры базы данных и обработка данных

Однако для этого мне нужно выполнить некоторую миграцию базы данных в методе onUpgrade(). Я сделал это раньше, и изменения структуры не проблема, проблема в том, что я хочу взять старые TimeStamps, представленные как строки, преобразовать их в longs и вставить их в новые столбцы.

Желаемый поток миграции будет примерно таким.

  1. Rename существующей таблица в tmp_TableName
  2. Создать новую таблицу TableName с новым TimeStamp колонкой типа данных длинной
  3. Вставьте существующие значения из tmp_table к новой таблице и на данном этапе существующих Timestamps должны быть преобразованы в миллисекунды и сохраняются в новую таблицу
  4. падения TMP таблицы

Это точка номер 3, что это проблема. Можно ли обрабатывать любые существующие данные до того, как они будут вставлены в новую таблицу в onUpgrade()? Я не видел примеров на этом, и я не знаю, возможно ли это. Каков правильный способ решения таких ситуаций?

ответ

0

Это проблема номер 3 в этом проблема. Можно ли обрабатывать любые существующие данные до того, как они будут вставлены в новую таблицу в onUpgrade()? I не видел примеров на этом, и я не знаю, возможно ли это. Каков правильный способ решения таких ситуаций?

Ваши предположения верны, и да, вы можете использовать onUpgrade() для переноса содержимого таблицы. Также обратите внимание, что onUpgrade() работает в транзакции, и Android гарантирует, что откат не будет выполнен.

+0

Okey, звучит хорошо, что onUpgrade() работает в транзакции и гарантирует откат, на самом деле этого не знал. Знаете ли вы какую-либо документацию, описывающую правильный способ переноса содержимого таблиц? Благодаря! – Robert

+0

нет, что я знаю. Но я делал то же самое в прошлом, и это сработало – Blackbelt

+0

Хм, как правило, это то, что мне нужно знать ... – Robert

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