AIRからSQLiteを使用する
AIRでは「flash.data」パッケージのクラスを使用するとSQLiteというデータベースを使用することができます。
JavaのJDBCを使用した経験があれば、すぐに理解できると思います。(非同期なことを除けば)
簡単なサンプルを作成したので掲載します。このサンプルではSQLiteのデータベースにアクセスしてテーブルのデータを取得し、グリッドコンポーネントに表示しています。
■実行結果

SQLiteのデータベースファイルを指定する際に「File.applicationStorageDirectory」を使用しています。これはWindowsXPでは「Documents And Settings/ユーザ名/ApplicationData/アプリケーション名/Local Data」を指しているようです。
そのうちAdobe AIR用のO/Rマッピングソフトが流行りそうですね。(もう存在するのでしょうか?)
JavaのJDBCを使用した経験があれば、すぐに理解できると思います。(非同期なことを除けば)
簡単なサンプルを作成したので掲載します。このサンプルではSQLiteのデータベースにアクセスしてテーブルのデータを取得し、グリッドコンポーネントに表示しています。
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="applicationCompleteEventHandle()">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
private var conn:SQLConnection;
private var stmt:SQLStatement;
private function applicationCompleteEventHandle():void {
var dbFile:File
= File.applicationStorageDirectory.resolvePath("local.db");
conn = new SQLConnection();
conn.addEventListener(SQLEvent.OPEN, databaseOpenEventHandle);
conn.addEventListener(SQLErrorEvent.ERROR, databaseOpenErrorEventHandle);
conn.open(dbFile);
}
private function closeEventHandle():void {
if (conn != null) {
conn.close();
}
}
private function databaseOpenEventHandle(event:SQLEvent):void {
readCustomerData();
}
private function databaseOpenErrorEventHandle(event:SQLErrorEvent):void {
Alert.show("データベースに接続できませんでした。", "データベース");
}
private function readCustomerData():void {
stmt = new SQLStatement();
stmt.sqlConnection = conn;
stmt.text = "SELECT ID, NAME, ADDRESS FROM CUSTOMERS";
stmt.addEventListener(SQLEvent.RESULT, queryExecuteResultEventHandle);
stmt.addEventListener(SQLErrorEvent.ERROR, queryExecuteErrorEventHandle);
stmt.execute();
}
private function queryExecuteResultEventHandle(event:SQLEvent):void {
var result:SQLResult = stmt.getResult();
var dataSource:ArrayCollection = new ArrayCollection();
for (var i:int = 0; i < result.data.length; i++) {
var obj:Object = new Object();
obj["id"] = result.data[i]["ID"];
obj["name"] = result.data[i]["NAME"];
obj["address"] = result.data[i]["ADDRESS"];
dataSource.addItem(obj);
}
customersGrid.dataProvider = dataSource;
}
private function queryExecuteErrorEventHandle(event:SQLErrorEvent):void {
Alert.show("SQL実行時にエラーが発生しました。", "データベース");
}
]]>
</mx:Script>
<mx:VBox y="0" height="100%" width="100%" x="0" verticalGap="0">
<mx:Canvas width="100%" height="100%">
<mx:DataGrid id="customersGrid" width="95%" height="95%" horizontalCenter="0" verticalCenter="0">
<mx:columns>
<mx:DataGridColumn headerText="顧客番号" dataField="id"/>
<mx:DataGridColumn headerText="顧客名" dataField="name"/>
<mx:DataGridColumn headerText="住所" dataField="address"/>
</mx:columns>
</mx:DataGrid>
</mx:Canvas>
</mx:VBox>
</mx:WindowedApplication>■実行結果

SQLiteのデータベースファイルを指定する際に「File.applicationStorageDirectory」を使用しています。これはWindowsXPでは「Documents And Settings/ユーザ名/ApplicationData/アプリケーション名/Local Data」を指しているようです。
そのうちAdobe AIR用のO/Rマッピングソフトが流行りそうですね。(もう存在するのでしょうか?)
ラベル: ActionScript, AIR

0 件のコメント :
コメントを投稿
この投稿へのリンク :
リンクを作成
<< ホーム