Есть некоторые проблемы, которые я действительно не знаю, как их решить. Я сохранил TimeStamp в моей базе данных SQLite как String (не очень умный ;-)), и знаю, что мне нужно преобразовать это в миллисекундную репрезентацию как длинную в базе данных. Причиной этого является то, что я хочу получить TimeStamp и представить его правильно в соответствии с локалью устройств.Android onUpgrade, изменение структуры базы данных и обработка данных
Однако для этого мне нужно выполнить некоторую миграцию базы данных в методе onUpgrade(). Я сделал это раньше, и изменения структуры не проблема, проблема в том, что я хочу взять старые TimeStamps, представленные как строки, преобразовать их в longs и вставить их в новые столбцы.
Желаемый поток миграции будет примерно таким.
- Rename существующей таблица в tmp_TableName
- Создать новую таблицу TableName с новым TimeStamp колонкой типа данных длинной
- Вставьте существующие значения из tmp_table к новой таблице и на данном этапе существующих Timestamps должны быть преобразованы в миллисекунды и сохраняются в новую таблицу
- падения TMP таблицы
Это точка номер 3, что это проблема. Можно ли обрабатывать любые существующие данные до того, как они будут вставлены в новую таблицу в onUpgrade()? Я не видел примеров на этом, и я не знаю, возможно ли это. Каков правильный способ решения таких ситуаций?
Okey, звучит хорошо, что onUpgrade() работает в транзакции и гарантирует откат, на самом деле этого не знал. Знаете ли вы какую-либо документацию, описывающую правильный способ переноса содержимого таблиц? Благодаря! – Robert
нет, что я знаю. Но я делал то же самое в прошлом, и это сработало – Blackbelt
Хм, как правило, это то, что мне нужно знать ... – Robert