我正在尝试解决为什么我的代码为我的所有查询返回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>
除此代码外,theres只是Flex创建的标准代码。执行后我收到此错误:
Error #2044: Unhandled SQLErrorEvent:. errorID=3115, operation=execute , message=Error #3115: SQL Error. , details=no such table: 'movies'
我已经使用2个不同的sqlite程序检查了数据库文件并成功执行了查询。 “电影”表和“标题”列都存在。如果重要的话,电影是3个表中的一个,并且有10个以上的列都存在值。
我做错了什么?我之前使用了相同的代码(我认为)和预期的结果,但是经过一些更改之后,我甚至可以在新文档中使用这个基本代码。请检查一下,看看我是否犯了一个愚蠢的错误,因为我看不到它:)
答案 0 :(得分:1)
您是否可以验证您打开的数据库的路径是您使用外部工具检查的文件的路径?您可以使用AS3代码中的database_list pragma。只需像执行任何其他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