1

次の関数内でAndroidアプリ用のsqliteデータベースを作成しています:

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

テーブルの作成、挿入、選択は正常にできますが、フラッシュcs5.5からアプリを再公開するたびに、データベースが上書きされ、すべてのデータが失われます。完全に困惑している、どんなアイデアも歓迎します!

乾杯

[編集]

だから、私は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" + ")";

その後、いくつかの操作、挿入、選択などを実行でき、すべてが期待どおりです。アプリを終了して再度luanchすると、以前のデータセットはそのままですが、フラッシュから再公開すると、以前のリリースから保存されたデータはすべて消えてしまいます。

ドキュメントによると、SQLConnection.open()は、パラメーターで指定されたファイルへの接続を開き、存在しない場合は接続を作成します...

4

2 に答える 2

0

flash.filesystem.FileのAS3リファレンスによると:

AIRアプリケーションをアンインストールする場合、アンインストーラーがアプリケーションストレージディレクトリとそのファイルを削除するかどうかは、プラットフォームによって異なります。

そのため、アプリを手動でアンインストールしてからデバイスに再度プッシュすると、この問題が発生する可能性があります。Androidデバイスへのアプリの公開間でデータが確実に保持されているため(Flash Builderを使用していましたが)、手順の詳細が役立ちます。

于 2012-02-15T02:54:02.687 に答える
0

アドビフォーラムでさらに調査した結果、Flash Proから再公開するときに、applicationStorageDirectoryに保存されているファイルが上書きされるのを防ぐことはできないと思います。

アプリの構築ではジオロケーションをコア機能として使用するため、実際のデータセットを使用する必要があります。私にとってうまくいった解決策は、私がまだアプリを開発している間に、データベースをapplicationStorageDirectoryからdocumentsDirectory(sdカード)にコピーすることでした(市場に出た場合はこれを削除します)。

于 2012-02-16T23:36:51.627 に答える