2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

79
Flash Builder4 Flash Builder4 をををを をををを をををを をををを DB DB AIR AIR ををををを ををををを 2011 2011 2 2 9 9 をを () をを () をををを をををを FlexUserGroup FlexUserGroup ををを ををを 130 130 をを をを

Transcript of 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

Page 1: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

Flash Builder4Flash Builder4 を使っを使ってて

組み込み組み込み DBDBAIRAIR アプリ開発アプリ開発

20112011 年年 22 月月 99 日(水)日(水)徳山禎男徳山禎男

FlexUserGroupFlexUserGroup 勉強会勉強会第第 130130 回@東京回@東京

Page 2: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

アジェンダアジェンダ

自己紹介自己紹介

ローカルデータベースローカルデータベースとはとは

接続からクエリ実行までの接続からクエリ実行までの

 実装方法 実装方法

Flash BuilderFlash Builder で作成したデモアで作成したデモアプリの披露プリの披露

Page 3: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

自己紹介自己紹介

ハンドルネームハンドルネーム tokufxugtokufxug

名前名前 徳山 禎男徳山 禎男

所属所属 クエストコム株式会社クエストコム株式会社

Page 4: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

自己紹介自己紹介

ハンドルネームハンドルネーム tokufxugtokufxug

WEBWEB twittertwitter :: @tokufxug blog:blog: 特産のもっさみな

Page 5: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

ローカルデータベースローカルデータベース

Page 6: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

ローカルデータベースローカルデータベース

AIRAIR アプリケーション内の情報アプリケーション内の情報をデータベースとして取り扱うをデータベースとして取り扱う事ができます。事ができます。

Page 7: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

ローカルデータベースローカルデータベース

AIRAIR アプリケーション内の情報アプリケーション内の情報をデータベースとして取り扱うをデータベースとして取り扱う事ができます。事ができます。

リレーショナルデータベースリレーショナルデータベースで、で、 SQLSQL を発行してデータアを発行してデータアクセスを行います。クセスを行います。

Page 8: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

ローカルデータベースローカルデータベース処理手順処理手順

Page 9: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

ローカルデータベースローカルデータベース処理手順処理手順

ローカルデータベース作成ローカルデータベース作成

Page 10: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

ローカルデータベースローカルデータベース処理手順処理手順

ローカルデータベース作成ローカルデータベース作成

データベース接続データベース接続

Page 11: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

ローカルデータベースローカルデータベース処理手順処理手順

ローカルデータベース作成ローカルデータベース作成

データベース接続データベース接続

SQLSQL 発行発行

Page 12: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

ローカルデータベースの作ローカルデータベースの作成成

ローカルデータベース用のローカルデータベース用のファイルを作成します。ファイルを作成します。

Page 13: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

ローカルデータベースの作ローカルデータベースの作成成

ローカルデータベース用のファイローカルデータベース用のファイルを作成します。ルを作成します。

varvar dbFile:File = dbFile:File = File.applicationStorageDirectorFile.applicationStorageDirectory.y.resolvePath(resolvePath(“dbFile.db”“dbFile.db”););

Page 14: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

ローカルデータベースの作ローカルデータベースの作成成

各各 AIRAIR アプリケーション固有のアプリケーション固有のディレクトリを指します。ディレクトリを指します。

varvar dbFile:File = dbFile:File = File.applicationStorageDirectorFile.applicationStorageDirectoryy..resolvePath(resolvePath(“dbFile.db”“dbFile.db”););

Page 15: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

ローカルデータベースの作ローカルデータベースの作成成

ディレクトリパスのファイルオブディレクトリパスのファイルオブジェクトを作成します。ジェクトを作成します。

varvar dbFile:File = dbFile:File = File.applicationStorageDirectorFile.applicationStorageDirectory.y.resolvePathresolvePath((“dbFile.db”“dbFile.db”););

Page 16: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

データベース接続データベース接続

使用するデータベースへ接続使用するデータベースへ接続処理を行います。処理を行います。

Page 17: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

データベース接続データベース接続

使用するデータベースへ接続使用するデータベースへ接続処理を行います。処理を行います。varvar dbCon:SQLConnection = dbCon:SQLConnection = new new SQLConnection();SQLConnection();

Page 18: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

データベース接続データベース接続

DBDB 接続成功によるイベントリス接続成功によるイベントリスナーを登録します。ナーを登録します。dbCon.addEventListener(dbCon.addEventListener(

SQLEvent.OPENSQLEvent.OPEN, onOpen);, onOpen);

Page 19: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

データベース接続データベース接続

DBDB 接続失敗によるイベントリスナー接続失敗によるイベントリスナーを登録します。を登録します。dbCon.addEventListener(dbCon.addEventListener(

SQLErrorEvent.ERRORSQLErrorEvent.ERROR, , onError);onError);

Page 20: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

データベース接続データベース接続

openAsyncopenAsync メソッドを実行するメソッドを実行するとと

  非同期でデータベース接続を非同期でデータベース接続を

 行います。 行います。dbCon.openAsync(dbCon.openAsync(dbFiledbFile); );

Page 21: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

データベース接続データベース接続

接続が成功すると成功のイベ接続が成功すると成功のイベントハンドラが呼ばれます。ントハンドラが呼ばれます。

functionfunction onOpen(e:SQLEvent):onOpen(e:SQLEvent):voidvoid { {

}}

Page 22: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

データベース接続データベース接続

接続が失敗するとエラーのイベ接続が失敗するとエラーのイベントハンドラが呼ばれます。ントハンドラが呼ばれます。

functionfunction onError(e:SQLErrorEvent):onError(e:SQLErrorEvent):voidvoid {{

}}

Page 23: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

データベース接続までの流れデータベース接続までの流れ

Page 24: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

データベース接続までの流れデータベース接続までの流れ

varvar dbFile:File = dbFile:File = File.applicationStorageDirectory.File.applicationStorageDirectory.resolvePatresolvePathh((“dbFile.db”“dbFile.db”););

Page 25: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

データベース接続までの流れデータベース接続までの流れ

varvar dbFile:File = dbFile:File = File.applicationStorageDirectory.File.applicationStorageDirectory.resolvePathresolvePath((““dbFile.db”dbFile.db”););

varvar dbCon:SQLConnection = dbCon:SQLConnection = newnew SQLConnection();SQLConnection();

Page 26: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

データベース接続までの流れデータベース接続までの流れ

varvar dbFile:File = dbFile:File = File.applicationStorageDirectory.File.applicationStorageDirectory.resolvePathresolvePath((“d“dbFile.db”bFile.db”););

varvar dbCon:SQLConnection = dbCon:SQLConnection = newnew SQLConnection();SQLConnection();

dbCon.addEventListener(dbCon.addEventListener(SQLEvent.OPENSQLEvent.OPEN, , onOpen);onOpen);

Page 27: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

データベース接続までの流れデータベース接続までの流れ

varvar dbFile:File = dbFile:File = File.applicationStorageDirectory.File.applicationStorageDirectory.resolvePathresolvePath((““dbFile.db”dbFile.db”););

varvar dbCon:SQLConnection = dbCon:SQLConnection = newnew SQLConnection();SQLConnection();

dbCon.addEventListener(dbCon.addEventListener(SQLEvent.OPENSQLEvent.OPEN, , onOpen);onOpen);

dbCon.addEventListener(dbCon.addEventListener(SQLErrorEvent.ERROSQLErrorEvent.ERRORR, onError);, onError);

Page 28: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

データベース接続までの流れデータベース接続までの流れ

varvar dbFile:File = dbFile:File = File.applicationStorageDirectory.File.applicationStorageDirectory.resolvePathresolvePath((““dbFile.db”dbFile.db”););

varvar dbCon:SQLConnection = dbCon:SQLConnection = newnew SQLConnection();SQLConnection();

dbCon.addEventListener(dbCon.addEventListener(SQLEvent.OPENSQLEvent.OPEN, , onOpen);onOpen);

dbCon.addEventListener(dbCon.addEventListener(SQLErrorEvent.ERROSQLErrorEvent.ERRORR, onError);, onError);

dbCon.openAsync(dbCon.openAsync(dbFiledbFile););

Page 29: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

データベース接続までの流れデータベース接続までの流れ

データベース接続サンプルデータベース接続サンプルのデモのデモ

Page 30: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 発行発行

Page 31: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 発行発行

SQLSQL を発行するクラスを生成しを発行するクラスを生成します。ます。

Page 32: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 発行発行

SQLSQL を発行するクラスを生成します。を発行するクラスを生成します。

varvar sqlStmt: sqlStmt:SQLStatementSQLStatement = =

                 new new SQLStatementSQLStatement();();

Page 33: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 発行発行

DBDB コネクションクラスを設定コネクションクラスを設定します。します。

sqlStmtsqlStmt.sqlConnection.sqlConnection = = dbCondbCon;;

Page 34: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 発行発行

SQLSQL 文を設定します。文を設定します。

sqlStmtsqlStmt.sqlConnection.sqlConnection = = dbCondbCon;;

sqlStmt.text = sqlStmt.text = “CREATE “CREATE TABLE..”TABLE..”;;

Page 35: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 発行発行

SQLSQL 実行成功によるイベントリス実行成功によるイベントリスナーを登録。ナーを登録。

sqlStmt.addEventListenersqlStmt.addEventListener ((SQLEvent.RESULT, onResultSQLEvent.RESULT, onResult););

Page 36: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 発行発行

SQLSQL 実行失敗によるイベントリス実行失敗によるイベントリスナーを登録。ナーを登録。

sqlStmt.addEventListenersqlStmt.addEventListener (SQLErrorEvent.Error, onError);(SQLErrorEvent.Error, onError);

Page 37: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 発行発行

SQLSQL を実行します。を実行します。

sqlStmt.sqlStmt.execute();execute();

Page 38: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 発行発行

SQLSQL 発行が成功すると成功のイベ発行が成功すると成功のイベントハンドラが呼ばれます。ントハンドラが呼ばれます。

functionfunction onResult(e:SQLEvent):onResult(e:SQLEvent):voidvoid { {

}}

Page 39: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 実行までの流れ実行までの流れ

Page 40: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 実行までの流れ実行までの流れ

varvar sqlStmt: sqlStmt:SQLStatementSQLStatement = new = new SQLStatementSQLStatement();();

Page 41: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 実行までの流れ実行までの流れ

varvar sqlStmt: sqlStmt:SQLStatementSQLStatement = new = new SQLStatementSQLStatement();();

sqlStmtsqlStmt.sqlConnection.sqlConnection = = dbCondbCon;;

Page 42: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 実行までの流れ実行までの流れ

varvar sqlStmt: sqlStmt:SQLStatementSQLStatement = new = new SQLStatementSQLStatement();();

sqlStmtsqlStmt.sqlConnection.sqlConnection = = dbCondbCon;;

sqlStmtsqlStmt.text.text = = “CREATE TABLE IF NOT “CREATE TABLE IF NOT EXISTS(…”EXISTS(…”;;

Page 43: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 実行までの流れ実行までの流れ

varvar sqlStmt: sqlStmt:SQLStatementSQLStatement = new = new SQLStatementSQLStatement();();

sqlStmtsqlStmt.sqlConnection.sqlConnection = = dbCondbCon;;

sqlStmtsqlStmt.text.text = = “CREATE TABLE IF NOT “CREATE TABLE IF NOT EXISTS(…”EXISTS(…”;;

sqlStmt.addEventListener(sqlStmt.addEventListener(SQLEvent.RESULTSQLEvent.RESULT, , onResultonResult););

Page 44: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 実行までの流れ実行までの流れ

varvar sqlStmt: sqlStmt:SQLStatementSQLStatement = new = new SQLStatementSQLStatement();();

sqlStmtsqlStmt.sqlConnection.sqlConnection = = dbCondbCon;;

sqlStmtsqlStmt.text.text = = “CREATE TABLE IF NOT “CREATE TABLE IF NOT EXISTS(…”EXISTS(…”;;

sqlStmt.addEventListener(sqlStmt.addEventListener(SQLEvent.RESULTSQLEvent.RESULT, , onResultonResult););

sqlStmt.addEventListener(SQLErrorEvent.ErrsqlStmt.addEventListener(SQLErrorEvent.Error, or, onError);onError);

Page 45: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 実行までの流れ実行までの流れ

varvar sqlStmt: sqlStmt:SQLStatementSQLStatement = new = new SQLStatementSQLStatement();();

sqlStmtsqlStmt.sqlConnection.sqlConnection = = dbCondbCon;;

sqlStmtsqlStmt.text.text = = “CREATE TABLE IF NOT “CREATE TABLE IF NOT EXISTS(…”EXISTS(…”;;

sqlStmt.addEventListener(sqlStmt.addEventListener(SQLEvent.RESULT, SQLEvent.RESULT, onResultonResult););

sqlStmt.addEventListener(SQLErrorEvent.ErrorsqlStmt.addEventListener(SQLErrorEvent.Error, , onError);onError);

sqlStmtsqlStmt.execute().execute();;

Page 46: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL 実行までの流れ実行までの流れ

SQLSQL 実行のデモ実行のデモ

Page 47: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

パラメータを使用する。パラメータを使用する。

Page 48: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

パラメータを使用する。パラメータを使用する。

登録、更新、検索、削除を行う場合、パラメータ登録、更新、検索、削除を行う場合、パラメータ指定を行う機能です。指定を行う機能です。

Page 49: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

パラメータを使用する。パラメータを使用する。

登録、更新、検索、削除を行う場合、パラメータ指登録、更新、検索、削除を行う場合、パラメータ指定を行う機能です。定を行う機能です。

sqlStmtsqlStmt.text.text = = “SELECT * FROM ““SELECT * FROM “

+ + “PERSON WHERE NAME “PERSON WHERE NAME = = :name:name””; ;

sqlStmt.addEventListener(sqlStmt.addEventListener(SQLEvent.RESULT, SQLEvent.RESULT, onResultonResult););

Page 50: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

パラメータを使用する。パラメータを使用する。

登録、更新、検索、削除を行う場合、パラメータ指登録、更新、検索、削除を行う場合、パラメータ指定を行う機能です。定を行う機能です。

sqlStmtsqlStmt.text.text = = “SELECT * FROM ““SELECT * FROM “

+ + “PERSON WHERE NAME “PERSON WHERE NAME = = :name:name””; ;

sqlStmtsqlStmt.parameters[.parameters[“:name”“:name”] = ] = ““ 徳山禎男徳山禎男”” ;;

sqlStmt.addEventListener(sqlStmt.addEventListener(SQLEvent.RESULT, SQLEvent.RESULT, onResultonResult););

Page 51: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

パラメータを使用する。パラメータを使用する。

登録、更新、検索、削除を行う場合、パラメータ指登録、更新、検索、削除を行う場合、パラメータ指定を行う機能です。定を行う機能です。

sqlStmt.text = “SELECT * FROM “sqlStmt.text = “SELECT * FROM “

+ + “PERSON WHERE NAME “PERSON WHERE NAME = = :name:name””; ;

sqlStmtsqlStmt.parameters[.parameters[“:name”“:name”] = ] = ““ 徳山禎男徳山禎男”” ;;

sqlStmt.addEventListener(SQLEvent.RESULT, sqlStmt.addEventListener(SQLEvent.RESULT, onResult);onResult);

Page 52: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

検索結果の取得検索結果の取得

Page 53: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

検索結果の取得検索結果の取得

SQLEvent.RESULTSQLEvent.RESULT のの

イベントハンドラー内で検索結果イベントハンドラー内で検索結果をを

取得します。取得します。

Page 54: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

検索結果の取得検索結果の取得

検索結果は、検索結果は、 SQLResultSQLResult クラスかクラスからら

取得します。取得します。

Page 55: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

検索結果の取得検索結果の取得

検索結果は、検索結果は、 SQLResultSQLResult クラスかクラスからら

取得します。取得します。

SQLStatementSQLStatement ののプロパティプロパティになになります。ります。

Page 56: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

検索結果の取得検索結果の取得

privateprivate functionfunction onResult(event: onResult(event:

SQLEvent):void {SQLEvent):void {

} }

Page 57: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

検索結果の取得検索結果の取得

privateprivate functionfunction onResult(event: onResult(event:

SQLEvent):void {SQLEvent):void {

varvar result: result:SQLResultSQLResult = =

sqlStmt.sqlStmt.getResult()getResult();;

} }

Page 58: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

検索結果の取得検索結果の取得

SQLResultSQLResult のプロパティのプロパティ、、 datadataにに

検索結果のデータを格納していま検索結果のデータを格納していますす

Page 59: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

検索結果の取得検索結果の取得

SQLResultSQLResult のプロパティのプロパティ、、 datadata にに

検索結果のデータを格納しています。検索結果のデータを格納しています。

datadata プロパティはプロパティは ArrayArray という配という配列の型です。列の型です。

Page 60: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

検索結果の取得検索結果の取得

datadata プロパテイにプロパテイに

複数の複数の ObjectObject 型のインスタンス型のインスタンスがが

格納しています。格納しています。

Page 61: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

検索結果の取得検索結果の取得

datadata プロパテイにプロパテイに

複数の複数の ObjectObject 型のインスタンス型のインスタンスがが

格納しています。格納しています。

ObjectObject データデータ 11 件件 = = テーブルテーブル 11 件件

キーがカラム名、値がカラムの値キーがカラム名、値がカラムの値

Page 62: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

検索結果の取得検索結果の取得

varvar result: result:SQLResultSQLResult = =

sqlStmt.sqlStmt.getResult()getResult();;

varvar array:Array = result. array:Array = result.datadata;;

Page 63: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

検索結果の取得検索結果の取得

検索アプリを動かして検索アプリを動かして

みましょう。みましょう。

Page 64: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL クラスをライブラリ化クラスをライブラリ化

Page 65: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL クラスをライブラリ化クラスをライブラリ化

今までお話したデータベース今までお話したデータベース

アクセスを、簡易化したクラアクセスを、簡易化したクラスを作成。スを作成。

Page 66: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL クラスをライブラリ化クラスをライブラリ化

// // データベースアクセスクラスデータベースアクセスクラス

var sql:SQLite = new SQLite();var sql:SQLite = new SQLite();

Page 67: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL クラスをライブラリ化クラスをライブラリ化

// // データベースアクセスクラスデータベースアクセスクラス

var sql:SQLite = new SQLite();var sql:SQLite = new SQLite();

sql.addEventListener(SQLEventsql.addEventListener(SQLEventResult, onResult);Result, onResult);

Page 68: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL クラスをライブラリ化クラスをライブラリ化

// // データベースアクセスクラスデータベースアクセスクラス

var sql:SQLite = new SQLite();var sql:SQLite = new SQLite();

sql.addEventListener(SQLEventsql.addEventListener(SQLEventResult, onResult);Result, onResult);

sql.text = “SQLsql.text = “SQL 文文”” ;;

sql.access();sql.access();

Page 69: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL クラスをライブラリ化クラスをライブラリ化

Page 70: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL クラスをライブラリ化クラスをライブラリ化

Page 71: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL クラスをライブラリ化クラスをライブラリ化

Page 72: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL クラスをライブラリ化クラスをライブラリ化

Page 73: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL クラスをライブラリ化クラスをライブラリ化

Page 74: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL クラスをライブラリ化クラスをライブラリ化

Page 75: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

SQLSQL クラスをライブラリ化クラスをライブラリ化

SQLSQL クラスを使用したクラスを使用した

サンプルアプリデモサンプルアプリデモ

Page 76: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

まとめまとめ

Page 77: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

まとめまとめ

SQLiteSQLite エンジンのエンジンの

ローカルデータベースが簡単に構築ローカルデータベースが簡単に構築

できます。できます。

Page 78: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

まとめまとめ

SQLiteSQLite エンジンのエンジンの

ローカルデータベースが簡単に構築ローカルデータベースが簡単に構築

できます。できます。

AIRAIR 対応プラットフォームであれば、対応プラットフォームであれば、

共有ライブラリとして使いまわす事が共有ライブラリとして使いまわす事が

できます。できます。

Page 79: 2011年2月9日第130回FxUG勉強会@東京第一打者空振り三振

ご清聴ありがとうございましご清聴ありがとうございました。た。