私はまだ Adobe Air/Flex の初心者であり、SQL についてはまだかなり新しいものです。
私はこの( http://coenraets.org/blog/2008/11/using-the-sqlite-database-access-api-in-air …-part-1/) コードをダウンロードし、それを調べてきました。私は同じアイデアを実装しようとしています。
馬鹿なことばかりだと思います。Flex Builder を使用しています。新しいデスクトップ アプリケーション プロジェクトを作成しましたが、何もインポートしませんでした。
DataGrid オブジェクトを追加し、それを ArrayCollection にバインドしました。
プログラムが初期化されるときに、データベースが存在する場合はデータベースからデータをロードし、存在しない場合は新しいデータベースを作成するようにしようとしています。
問題は、アプリケーションの実行時にデータグリッドが空であることです。列ヘッダーもデータも何もありません。たくさんのものを変更しようとしました。デバッガーを使用して、すべての関数が想定どおりに呼び出されていることを確認しました。何が間違っているのかわかりません。私は自分のコードを前述のコードと比較し、Google でチュートリアルを探しました。私が間違っていることを知っている人はいますか?
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="672" height="446"
applicationComplete="onFormLoaded()"
title="iRecipes">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
private var sqlConnection:SQLConnection;
[Bindable] private var recipeList:ArrayCollection;
private function onFormLoaded():void
{
sqlConnection = new SQLConnection();
openDataBase();
}
private function openDataBase():void
{
var file:File = File.userDirectory.resolvePath("recipes.db");
sqlConnection.open(file, SQLMode.CREATE);
if(!file.exists)
{
createDatabase();
}
populateRecipeList()
}
private function createDatabase():void
{
var statement:SQLStatement = new SQLStatement();
statement.sqlConnection = sqlConnection;
statement.text = "CREATE TABLE Recipes (recipeId INTEGER PRIMARY KEY AUTOINCREMENT, recipeName TEXT, authorName TEXT)";
statement.execute();
statement.text = "INSERT INTO Recipes (recipeName, authorName) VALUES (:recipeName, :authorName)";
statement.parameters[":recipeName"] = "Soup";
statement.parameters[":authorName"] = "Joel Johnson";
statement.execute();
statement.parameters[":recipeName"] = "Garbage";
statement.parameters[":authorName"] = "Bob Vila";
statement.execute();
}
private function populateRecipeList():void
{
var statement:SQLStatement = new SQLStatement();
statement.sqlConnection = sqlConnection;
statement.text = "SELECT * FROM Recipes";
statement.execute();
recipeList = new ArrayCollection(statement.getResult().data);
}
]]>
</mx:Script>
<mx:DataGrid dataProvider="{recipeList}">
</mx:DataGrid>
</mx:WindowedApplication>