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