0

私は、Flash Builder 4.6 と Flex 4.6 を使用してモバイル フレックス アプリケーションに取り組んでいます。bin-debug フォルダーに SQlite db ファイルがあり、アプリケーションの起動時に ActionScript の applicationStorageDirectory にコピーします。

アプリの初期化イベントで呼び出されたデータベースをセットアップするスクリプトは次のとおりです。

        /* Variables*/

        private var file:File = File.applicationDirectory.resolvePath("db/myHealthBuddy.db");
        private var local:File = File.applicationStorageDirectory.resolvePath("db/myHealthBuddy.db");
        private var conn:SQLConnection;
        private var model:Model = new Model();

        /* db */
        protected function dbInit():void
        {           

            if(!local.exists)
            {
                local.createDirectory();
                file.copyTo(local,true);
            }
            conn = new SQLConnection();
            conn.addEventListener(SQLEvent.OPEN, openHandler);
            conn.addEventListener(SQLErrorEvent.ERROR, errorHandler);
            conn.openAsync(local);
        }

        private function openHandler(event:SQLEvent):void
        {
            trace("\ndb open");
            conn.removeEventListener(SQLEvent.OPEN, openHandler);

            // saving connection to Model valueObject 
            model.connection = conn;

            // create tables if not already exists
            var createTablesFile:File = File.applicationDirectory.resolvePath("db" + File.separator + "createtables.xml");
            var stream:FileStream = new FileStream();
            stream.open(createTablesFile, FileMode.READ);
            var xml:XML = XML(stream.readUTFBytes(stream.bytesAvailable));
            stream.close();
            conn.begin(SQLTransactionLockType.IMMEDIATE);
            for each (var statement:XML in xml.statement)
            {
                var stmt:SQLStatement = new SQLStatement();
                stmt.sqlConnection = conn;
                stmt.text = statement;
                stmt.execute();         
            }
            conn.commit();


            navigator.firstViewData = model;
        }

このコードは大丈夫ですか?

たとえば、データベースに変更を加える必要があります(新しいテーブルを追加し、既存のテーブルに列を追加します)。これらの変更をsqlite dbに加えると、それらは元に戻りますが、テーブル作成SQLを含むxmlファイルに残ります。

4

0 に答える 0