Как предотвратить перезапись базы данных Air для Android SQLite? - PullRequest
1 голос
/ 15 февраля 2012

Я создаю базу данных sqlite в моем приложении для Android с помощью следующей функции:

protected function createDatabase():void{

        _sqlConnection = new SQLConnection();
        _sqlConnection.addEventListener(SQLEvent.OPEN, openHandler); 
        _sqlConnection.addEventListener(SQLErrorEvent.ERROR, errorHandler); 

        var _sqlFolder:File = File.applicationStorageDirectory; 
        var _sqlFile:File = _sqlFolder.resolvePath("RouteLog.db");          

        _sqlConnection.open(_sqlFile); 
}

Я могу успешно создавать таблицы, вставлять и выбирать, но каждый раз, когда я повторно публикую приложение из flash cs5.5 база данных перезаписывается и все данные теряются.Абсолютно в тупик, любые идеи приветствуются!

Приветствия

[править]

Итак, я публикую отладочную версию непосредственно из Flash Pro через USB.Когда приложение инициализируется, оно вызывает метод, описанный выше, при получении события OPEN оно создает таблицу, используя следующую инструкцию SQL

var SQL:String =            
            "CREATE TABLE IF NOT EXISTS myRoutes (" +
            "id INTEGER PRIMARY KEY AUTOINCREMENT, " +
            "name STRING, " + 
            "created DATE, " + 
            "duration NUMBER, " + 
            "waypoints OBJECT, " + 
            "avgSpeed NUMBER, " +
            "distance NUMBER, " +
            "rating NUMBER" + ")";

Затем я могу запустить некоторые операции, вставить, выбрать и т. Д., И все как и ожидалось.,Если я выхожу из приложения и повторно запускаю приложение, предыдущие наборы данных остаются без изменений, но при повторной публикации с флэш-памяти все данные, сохраненные в предыдущем выпуске, исчезают.

Согласно документации SQLConnection.open ()откроет соединение с файлом, указанным в параметрах, и, если его не существует, создаст его ...

Ответы [ 2 ]

0 голосов
/ 17 февраля 2012

После дальнейших исследований на форумах Adobe я думаю, что ответ заключается в том, что вы не можете предотвратить перезапись файлов, хранящихся в applicationStorageDirectory, при повторной публикации из Flash Pro.

Приложение im building использует Geolocation в качестве основной функции, поэтому мне нужен реальный набор данных для работы. В конце концов, решение, которое сработало для меня, состояло в том, чтобы скопировать базу данных из applicationStorageDirectory в DocumentsDirectory (SD-карта), пока я все еще занимаюсь разработкой приложения (удалит его, если оно когда-нибудь попадет на рынок).

0 голосов
/ 15 февраля 2012

Согласно справке AS3 для flash.filesystem.File:

При удалении приложения AIR удаляет ли программа удаления каталог хранения приложения и его файлы, зависит от платформы.

Таким образом, вы можете столкнуться с этой проблемой, если вы удалите приложение вручную, а затем снова загрузите его на устройство.Более подробная информация об этих шагах поможет, поскольку у меня определенно сохраняются данные между публикациями приложений на устройстве Android (хотя я использовал Flash Builder).

...