0

コードがすべてのクエリに対して null を返した理由をトラブルシューティングしようとしていますが、最終的に SQL クエリが何も返さないことがわかりました。最小限のコードで新しい AIR ドキュメント (s:WindowedApplication) を作成しました。

<fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;

            private var sqlConnection:SQLConnection;
            private var select:SQLStatement;
            private var databaseFile:File;

            protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
            {
                var dbPath:String = "Movie Manager Settings/moovioDB2.db";
                databaseFile = File.userDirectory.resolvePath(dbPath);
                sqlConnection = new SQLConnection();
                select = new SQLStatement();

                sqlConnection.addEventListener(SQLEvent.OPEN, onDatabaseOpen);
                sqlConnection.openAsync();
            }

            private function onDatabaseOpen(event:SQLEvent):void
            {
                select.sqlConnection = sqlConnection;
                var query:String = "SELECT title FROM movies";
                select.text = query;
                select.addEventListener(SQLEvent.RESULT, done);
                select.execute();
            }

            private function done(event:SQLEvent):void{
                var res:SQLResult = select.getResult();
            }

        ]]>
    </fx:Script>

このコード以外には、Flex によって作成された標準タグだけがあります。実行すると、次のエラーが発生します。

Error #2044: Unhandled SQLErrorEvent:. errorID=3115, operation=execute , message=Error #3115: SQL Error. , details=no such table: 'movies'

2 つの異なる sqlite プログラムでデータベース ファイルをチェックし、クエリを正常に実行しました。「movies」テーブルと「title」列の両方が存在します。映画が 3 つのテーブルの 1 つであり、すべてに値が存在する 10 を超える列があることが重要な場合。

私は何を間違っていますか?以前は同じコードを使用して(と思っていました)、期待どおりの結果が得られましたが、いくつかの変更を加えた後、新しいドキュメントでこの基本的なコードを動作させることさえできます。私はそれを見ることができないので、それをチェックして、私が愚かな間違いを犯しているかどうかを確認してください:)

4

1 に答える 1

1

開いたデータベースのパスが、外部ツールでチェックしたファイルのパスであることを確認できますか? AS3 コード内からdatabase_list プラグマを使用できます。他の SQL ステートメントと同じように実行するだけです。

[user@host ~]$ cd /tmp
[user@host tmp]$ sqlite3 foo.db
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> pragma database_list;
0|main|/tmp/foo.db
于 2012-08-28T14:17:58.077 に答える