0

FlashBuilder 4.6を使用していて、作業中のシンプルなアプリがあります。sqlite dbを使用し、1。)新しいレコードを追加できるmxmlコンポーネントがあります2.)リストコンポーネントを使用してdb内のレコードを一覧表示し、クリックすると3.)入力フィールドを使用して選択したdbレコードを変更します

すべての側面が正常に機能しており、dbの作成(まだ存在しない場合)、リストコンポーネントにすべてのレコードが表示され、新しいエントリの追加が機能して正常に保存されます...

問題はUPDATE関数にあります。他のコンポーネントを使用して新しいレコードを追加し、それらを一覧表示するため、テーブルがデータベースに存在することを知っています...(データベースとテーブルの名前がす​​べての関数で一貫していることを確認しました)が、何らかの理由で次を実行しようとすると吐き出すUPDATEルーチン

SQLError: 'Error #3115: SQL Error.', details:'no such table: 'tblquiz'', operation:'execute', detailID:'2013'

これは、ユーザーがdbレコードを更新できるようにするために実行しようとしているactionscript3コードです。

private function updateQuestion():void
        {

            var dbFile:File = File.applicationDirectory.resolvePath("database.db");
            var dbConnection:SQLConnection = new SQLConnection();
            dbConnection.open(dbFile);

            var statement:SQLStatement = new SQLStatement();
            statement.sqlConnection = dbConnection;

            // TAKE THE FORM FIELD VALUES AND USE THIS SQL STATEMENT TO UPDATE THE DATABASE RECORD WHERE THE ID MATCHES DATA.ID
            statement.text = "UPDATE tblquiz SET question = '" + fieldQuestion + "', answerA = '" + fieldAnswerA + "', answerB = '" + fieldAnswerB + "', answerC = '" + fieldAnswerC + "' WHERE id = " + data.id;
            trace(statement.text);

            statement.execute();

            // GO BACK TO THE LIST COMPONENT TO SEE IF THE UPDATE WORKED
            navigator.popView();

        }

ここで何が欠けていますか?データベースとテーブルを参照する他のすべては正常に機能します。グーグルでこのエラーに光を当てるものは何も見つかりませんでした。USBで接続されたデバイスと、開発中のデスクトップマシンのAIRエミュレータでエラーが発生します。

前もって感謝します!

更新:問題は解決しました...アプリでデータベースの異なるパスを使用しました...一部の場所ではapplicationDirectoryを使用し、他の場所ではapplicationStorageDirectoryを使用しました....すべてを次のように変更しました:

File.applicationStorageDirectory.resolvePath("database.db");

...これはiOSとAndroidの両方で機能する方法だと私は信じています(Androidは現時点ではすべてImに関係していますが)。あなたの助けに感謝します-私が以前にそれを逃したとは信じられません。睡眠不足のせいにします。

4

1 に答える 1

2

問題は解決しました....アプリでデータベースの異なるパスを使用したことが判明しました...ある場所ではapplicationDirectoryを使用し、他の場所ではapplicationStorageDirectoryを使用しました....すべてを次のように変更しました:

File.applicationStorageDirectory.resolvePath("database.db");

...これはiOSとAndroidの両方で機能する方法だと私は信じています(Androidは現時点ではすべてImに関係していますが)。あなたの助けに感謝します-私が以前にそれを逃したとは信じられません。睡眠不足のせいにします。

于 2013-02-17T17:02:03.300 に答える