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 个表之一,并且有 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 回答