Tworzę db sqlite w moim powietrzu dla aplikacji na Androida w następującej funkcji:

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); 
}

Mogę z powodzeniem tworzyć tabele, wstawiać i wybierać, ale za każdym razem, gdy ponownie publikuję aplikację z flasha cs5.5, baza danych jest nadpisywana i wszystkie dane są tracone. Całkowicie zakłopotany, wszelkie pomysły są mile widziane!

Twoje zdrowie

[edytować]

Więc publikuję wersję debugowania bezpośrednio z programu flash pro przez USB. Gdy aplikacja jest inicjowana, wywołuje powyższą metodę, po otrzymaniu zdarzenia OPEN tworzy tabelę za pomocą następującej instrukcji 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" + ")";

Mogę wtedy uruchomić kilka operacji, wstawić, wybrać itp. i wszystko jest zgodnie z oczekiwaniami. Jeśli wyjdę i ponownie uruchomię aplikację, poprzednie zestawy danych pozostaną nienaruszone, ale po ponownym opublikowaniu z pamięci flash wszelkie dane przechowywane z poprzedniej wersji zniknęły.

Zgodnie z dokumentacją SQLConnection.open() otworzy połączenie do podanego w parametrach pliku, a jeśli nie istnieje, utworzy je...

1
Geoff Liddiard 15 luty 2012, 02:08

2 odpowiedzi

Najlepsza odpowiedź

Po dalszych badaniach na forach Adobe myślę, że odpowiedź brzmi, że nie można zapobiec nadpisaniu plików przechowywanych w applicationStorageDirectory podczas ponownego publikowania z Flash Pro.

Tworzenie aplikacji wykorzystuje geolokalizację jako podstawową funkcję, więc potrzebuję prawdziwego zestawu danych do pracy. Rozwiązaniem, które w końcu zadziałało, było skopiowanie bazy danych z applicationStorageDirectory do documentsDirectory (karta SD), podczas gdy wciąż rozwijam aplikację (usunie to, jeśli kiedykolwiek trafi na rynek).

0
Geoff Liddiard 17 luty 2012, 03:36

Zgodnie z dokumentacją AS3 dotyczącą flash.filesystem.File:

Po odinstalowaniu aplikacji AIR to, czy dezinstalator usunie katalog przechowywania aplikacji i jego pliki, zależy od platformy.

Możesz więc napotkać ten problem, jeśli ręcznie odinstalujesz aplikację, a następnie ponownie prześlesz ją na urządzenie. Więcej szczegółów na temat kroków pomoże, ponieważ na pewno dane utrzymywały się między publikowaniem aplikacji na urządzeniu z Androidem (chociaż korzystałem z programu Flash Builder).

0
Aaron 15 luty 2012, 06:54