AIRのSQLite関連のソースをgoogle code上に乗せてみました。
まだまだ、未完成ですが・・・・

以前から使っていた、SQLiteのテーブルデータから、そのままDataGirdや、ListなどのdataProvidertとして使えるクラスを同期モードから非同期モードに作り替えてみました。

こんな感じに使えます。

import com.coltware.airxlib.db.collection.TableCollectionView;
:
public var list:TableCollectionView;
:
list = new TableCollectionView("project");
list.itemClass = ProjectModel;        //  SQLStatementのitemClassに設定されるクラスファイルを設定する
list.sqlConnection = table.sqlConnection; //  SQLConnectionを設定する
list.start();
grid.dataProvider = list;

mxmlのサンプル

<mx:datagrid id="grid" width="95%" selectable="true"  height="80%" paddingLeft="5">
	<mx:columns>
		<mx:datagridcolumn headerText="ID"   dataField="sysuid" sortable="true" width="100" />
		<mx:datagridcolumn headerText="名称" dataField="title"  sortable="true" />
		<mx:datagridcolumn headerText="メモ" dataField="memo" sortable="true" />
		<mx:datagridcolumn headerText="作成日" dataField="created_at"  labelFunction="LabelUtil.date" sortable="true" width="120" />
		<mx:datagridcolumn headerText="更新日" dataField="updated_at" labelFunction="LabelUtil.date" sortable="true" width="120"/>
	</mx:columns>
</mx:datagrid>

とこれだけで、勝手に必要なデータをSELECTして表示します。
ソートもできます。(ただ、AdvancedDataGirdに対応していないのと、Tree構造にも対応していません。)

これ以外に、Flex:AIR SQLiteにXMLを使ってテーブルを作成するも、
パッケージ名を変えて公開しました。

こちらは、XMLファイルからSQLを作成し、そのテーブルを操作するクラスを作成します。
こちらと先ほどのTableCollectionViewを組み合わせると、そのクラスを通じてデータを更新すると、自動的にCollectionViewに対して変更イベントが発行されますので、
データがリフレッシュされるというように動くわけです。

以下のような処理をアプリケーションの起動時に実行しておきます。

public function startDb():void{
  sqlconn = new SQLConnection();
  sqlconn.addEventListener(SQLEvent.OPEN,hook_dbopen);
  sqlconn.openAsync(file);
}
/**
*  必要なテーブルを設定するための処理
*/
private function hook_dbopen(event:SQLEvent):void{			
  var dbman:DBManager = DBManager.newInstance(sqlconn);
  dbman.registerTable("table_uid","/xml/table.xml",ProjectTable);
}

そして、実際にデータを登録するときには

var table:ProjectTable = DBManager.getInstance().getTable("table_uid") as ProjectTable;
var item:Object = new Object();
item.title = "....";
:
table.insertItem(item);

みたいにすれば、データが登録できるという訳です。
ちなみに、”table_uid”という文字は何でもよくて、単に、TableオブジェクトをregisterTableで登録するときの名前で、
そのオブジェクトを後で、取得したいときのIDとして使います。

また、/xml/table.xmlは、table定義をXMLで定義したファイルで、今はソース上のパスに一致しています。
XMLの構造は、Flex:AIR SQLiteにXMLを使ってテーブルを作成すると基本的は変わっていません。

ちなみに、先ほどのTableCollectionViewのコンストラクタにこのtableを設定すれば、
この追加処理での変更イベントで、データが書き換わるというわけです。

じょじょに使い方を含めて公開しながら、更新していきたいと思います。

お仕事のご依頼・相談を承ります
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら

Leave a Reply

お仕事のご依頼・相談
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら
ソフトウェア&ライブラリ




ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
執筆書籍
本、雑誌等

WEB記事:CodeZine
執筆記事はこちら
カレンダー
2011年3月
« 2月   4月 »
 123456
78910111213
14151617181920
21222324252627
28293031  

カスタム検索
RSS
Add to Google < !–adsense–>
アーカイブ
カテゴリ
にほんブログ村 IT技術ブログへ