Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
20110917 fxug kyoto
Next
Download to read offline and view in fullscreen.

0

Share

Download to read offline

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

Download to read offline

  • Be the first to like this

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

  1. 1. Flash Builder4 を使って 組み込み DB AIR アプリ開発 2011 年 2 月 9 日(水) 徳山禎男 FlexUserGroup 勉強会 第 130 回@東京
  2. 2. アジェンダ <ul><li>自己紹介 </li></ul><ul><li>ローカルデータベース とは </li></ul><ul><li>接続からクエリ実行までの </li></ul><ul><li> 実装方法 </li></ul><ul><li>Flash Builder で作成したデモアプリの披露 </li></ul>
  3. 3. 自己紹介 <ul><li>ハンドルネーム </li></ul><ul><ul><li>tokufxug </li></ul></ul><ul><li>名前 </li></ul><ul><ul><li>徳山 禎男 </li></ul></ul><ul><li>所属 </li></ul><ul><ul><li>クエストコム株式会社 </li></ul></ul>
  4. 4. 自己紹介 <ul><li>ハンドルネーム </li></ul><ul><ul><li>tokufxug </li></ul></ul><ul><li>WEB </li></ul><ul><ul><li>twitter : @tokufxug </li></ul></ul><ul><ul><li>blog: 特産のもっさみな </li></ul></ul>
  5. 5. ローカルデータベース
  6. 6. ローカルデータベース <ul><li>AIR アプリケーション内の情報をデータベースとして取り扱う事ができます。 </li></ul>
  7. 7. ローカルデータベース <ul><li>AIR アプリケーション内の情報をデータベースとして取り扱う事ができます。 </li></ul><ul><li>リレーショナルデータベースで、 SQL を発行してデータアクセスを行います。 </li></ul>
  8. 8. ローカルデータベース 処理手順
  9. 9. ローカルデータベース 処理手順 <ul><li>ローカルデータベース作成 </li></ul>
  10. 10. ローカルデータベース 処理手順 <ul><li>ローカルデータベース作成 </li></ul><ul><li>データベース接続 </li></ul>
  11. 11. ローカルデータベース 処理手順 <ul><li>ローカルデータベース作成 </li></ul><ul><li>データベース接続 </li></ul><ul><li>SQL 発行 </li></ul>
  12. 12. ローカルデータベースの作成 <ul><li>ローカルデータベース用のファイルを作成します。 </li></ul>
  13. 13. ローカルデータベースの作成 <ul><li>ローカルデータベース用のファイルを作成します。 </li></ul><ul><ul><li>var dbFile:File = </li></ul></ul><ul><ul><li>File.applicationStorageDirectory. </li></ul></ul><ul><ul><li>resolvePath( “dbFile.db” ); </li></ul></ul>
  14. 14. ローカルデータベースの作成 <ul><li>各 AIR アプリケーション固有のディレクトリを指します。 </li></ul><ul><ul><li>var dbFile:File = </li></ul></ul><ul><ul><li>File.applicationStorageDirectory . </li></ul></ul><ul><ul><li>resolvePath( “dbFile.db” ); </li></ul></ul>
  15. 15. ローカルデータベースの作成 <ul><li>ディレクトリパスのファイルオブジェクトを作成します。 </li></ul><ul><ul><li>var dbFile:File = </li></ul></ul><ul><ul><li>File.applicationStorageDirectory. </li></ul></ul><ul><ul><li>resolvePath ( “dbFile.db” ); </li></ul></ul>
  16. 16. データベース接続 <ul><li>使用するデータベースへ接続処理を行います。 </li></ul>
  17. 17. データベース接続 <ul><li>使用するデータベースへ接続処理を行います。 </li></ul><ul><ul><li>var dbCon:SQLConnection = </li></ul></ul><ul><ul><li>new SQLConnection(); </li></ul></ul>
  18. 18. データベース接続 <ul><li>DB 接続成功によるイベントリスナーを登録します。 </li></ul><ul><ul><li>dbCon.addEventListener( </li></ul></ul><ul><ul><li>SQLEvent.OPEN , onOpen); </li></ul></ul>
  19. 19. データベース接続 <ul><li>DB 接続失敗によるイベントリスナーを登録します。 </li></ul><ul><ul><li>dbCon.addEventListener( </li></ul></ul><ul><ul><li>SQLErrorEvent.ERROR , onError); </li></ul></ul>
  20. 20. データベース接続 <ul><li>openAsync メソッドを実行すると </li></ul><ul><li> 非同期でデータベース接続を </li></ul><ul><li> 行います。 </li></ul><ul><ul><li>dbCon.openAsync( dbFile ); </li></ul></ul>
  21. 21. データベース接続 <ul><li>接続が成功すると成功のイベントハンドラが呼ばれます。 </li></ul><ul><li>function onOpen(e:SQLEvent): void { </li></ul><ul><li>} </li></ul>
  22. 22. データベース接続 <ul><li>接続が失敗するとエラーのイベントハンドラが呼ばれます。 </li></ul><ul><li>function onError(e:SQLErrorEvent): void { </li></ul><ul><li>} </li></ul>
  23. 23. データベース接続までの流れ
  24. 24. データベース接続までの流れ <ul><li>var dbFile:File = File.applicationStorageDirectory. resolvePath ( “dbFile.db” ); </li></ul>
  25. 25. データベース接続までの流れ <ul><li>var dbFile:File = File.applicationStorageDirectory. resolvePath ( “dbFile.db” ); </li></ul><ul><li>var dbCon:SQLConnection = new SQLConnection(); </li></ul>
  26. 26. データベース接続までの流れ <ul><li>var dbFile:File = File.applicationStorageDirectory. resolvePath ( “dbFile.db” ); </li></ul><ul><li>var dbCon:SQLConnection = new SQLConnection(); </li></ul><ul><li>dbCon.addEventListener( SQLEvent.OPEN , onOpen); </li></ul>
  27. 27. データベース接続までの流れ <ul><li>var dbFile:File = File.applicationStorageDirectory. resolvePath ( “dbFile.db” ); </li></ul><ul><li>var dbCon:SQLConnection = new SQLConnection(); </li></ul><ul><li>dbCon.addEventListener( SQLEvent.OPEN , onOpen); </li></ul><ul><li>dbCon.addEventListener( SQLErrorEvent.ERROR , onError); </li></ul>
  28. 28. データベース接続までの流れ <ul><li>var dbFile:File = File.applicationStorageDirectory. resolvePath ( “dbFile.db” ); </li></ul><ul><li>var dbCon:SQLConnection = new SQLConnection(); </li></ul><ul><li>dbCon.addEventListener( SQLEvent.OPEN , onOpen); </li></ul><ul><li>dbCon.addEventListener( SQLErrorEvent.ERROR , onError); </li></ul><ul><li>dbCon.openAsync( dbFile ); </li></ul>
  29. 29. データベース接続までの流れ <ul><li>データベース接続サンプルのデモ </li></ul>
  30. 30. SQL 発行
  31. 31. SQL 発行 <ul><li>SQL を発行するクラスを生成します。 </li></ul>
  32. 32. SQL 発行 <ul><li>SQL を発行するクラスを生成します。 </li></ul><ul><li>var sqlStmt: SQLStatement = </li></ul><ul><li>         new SQLStatement (); </li></ul>
  33. 33. SQL 発行 <ul><li>DB コネクションクラスを設定します。 </li></ul><ul><li>sqlStmt .sqlConnection = dbCon ; </li></ul>
  34. 34. SQL 発行 <ul><li>SQL 文を設定します。 </li></ul><ul><li>sqlStmt .sqlConnection = dbCon ; </li></ul><ul><li>sqlStmt.text = “CREATE TABLE..” ; </li></ul>
  35. 35. SQL 発行 <ul><li>SQL 実行成功によるイベントリスナーを登録。 </li></ul><ul><li>sqlStmt.addEventListener ( SQLEvent.RESULT, onResult ); </li></ul>
  36. 36. SQL 発行 <ul><li>SQL 実行失敗によるイベントリスナーを登録。 </li></ul><ul><li>sqlStmt.addEventListener (SQLErrorEvent.Error, onError); </li></ul>
  37. 37. SQL 発行 <ul><li>SQL を実行します。 </li></ul><ul><li>sqlStmt. execute(); </li></ul>
  38. 38. SQL 発行 <ul><li>SQL 発行が成功すると成功のイベントハンドラが呼ばれます。 </li></ul><ul><li>function onResult(e:SQLEvent): void { </li></ul><ul><li>} </li></ul>
  39. 39. SQL 実行までの流れ
  40. 40. SQL 実行までの流れ <ul><li>var sqlStmt: SQLStatement = new SQLStatement (); </li></ul>
  41. 41. SQL 実行までの流れ <ul><li>var sqlStmt: SQLStatement = new SQLStatement (); </li></ul><ul><li>sqlStmt .sqlConnection = dbCon ; </li></ul>
  42. 42. SQL 実行までの流れ <ul><li>var sqlStmt: SQLStatement = new SQLStatement (); </li></ul><ul><li>sqlStmt .sqlConnection = dbCon ; </li></ul><ul><li>sqlStmt .text = “CREATE TABLE IF NOT EXISTS(…” ; </li></ul>
  43. 43. SQL 実行までの流れ <ul><li>var sqlStmt: SQLStatement = new SQLStatement (); </li></ul><ul><li>sqlStmt .sqlConnection = dbCon ; </li></ul><ul><li>sqlStmt .text = “CREATE TABLE IF NOT EXISTS(…” ; </li></ul><ul><li>sqlStmt.addEventListener( SQLEvent.RESULT, onResult ); </li></ul>
  44. 44. SQL 実行までの流れ <ul><li>var sqlStmt: SQLStatement = new SQLStatement (); </li></ul><ul><li>sqlStmt .sqlConnection = dbCon ; </li></ul><ul><li>sqlStmt .text = “CREATE TABLE IF NOT EXISTS(…” ; </li></ul><ul><li>sqlStmt.addEventListener( SQLEvent.RESULT, onResult ); </li></ul><ul><li>sqlStmt.addEventListener(SQLErrorEvent.Error, onError); </li></ul>
  45. 45. SQL 実行までの流れ <ul><li>var sqlStmt: SQLStatement = new SQLStatement (); </li></ul><ul><li>sqlStmt .sqlConnection = dbCon ; </li></ul><ul><li>sqlStmt .text = “CREATE TABLE IF NOT EXISTS(…” ; </li></ul><ul><li>sqlStmt.addEventListener( SQLEvent.RESULT, onResult ); </li></ul><ul><li>sqlStmt.addEventListener(SQLErrorEvent.Error, onError); </li></ul><ul><li>sqlStmt .execute() ; </li></ul>
  46. 46. SQL 実行までの流れ <ul><li>SQL 実行のデモ </li></ul>
  47. 47. パラメータを使用する。
  48. 48. パラメータを使用する。 <ul><li>登録、更新、検索、削除を行う場合、パラメータ指定を行う機能です。 </li></ul>
  49. 49. パラメータを使用する。 <ul><li>登録、更新、検索、削除を行う場合、パラメータ指定を行う機能です。 </li></ul><ul><li>sqlStmt .text = “SELECT * FROM “ </li></ul><ul><li>+ “PERSON WHERE NAME = :name ” ; </li></ul><ul><li>sqlStmt.addEventListener( SQLEvent.RESULT, onResult ); </li></ul>
  50. 50. パラメータを使用する。 <ul><li>登録、更新、検索、削除を行う場合、パラメータ指定を行う機能です。 </li></ul><ul><li>sqlStmt .text = “SELECT * FROM “ </li></ul><ul><li>+ “PERSON WHERE NAME = :name ” ; </li></ul><ul><li>sqlStmt .parameters[ “:name” ] = “ 徳山禎男” ; </li></ul><ul><li>sqlStmt.addEventListener( SQLEvent.RESULT, onResult ); </li></ul>
  51. 51. パラメータを使用する。 <ul><li>登録、更新、検索、削除を行う場合、パラメータ指定を行う機能です。 </li></ul><ul><li>sqlStmt.text = “SELECT * FROM “ </li></ul><ul><li>+ “PERSON WHERE NAME = :name ” ; </li></ul><ul><li>sqlStmt .parameters[ “:name” ] = “ 徳山禎男” ; </li></ul><ul><li>sqlStmt.addEventListener(SQLEvent.RESULT, onResult); </li></ul>
  52. 52. 検索結果の取得
  53. 53. 検索結果の取得 <ul><li>SQLEvent.RESULT の </li></ul><ul><li>イベントハンドラー内で検索結果を </li></ul><ul><li>取得します。 </li></ul>
  54. 54. 検索結果の取得 <ul><li>検索結果は、 SQLResult クラスから </li></ul><ul><li>取得します。 </li></ul>
  55. 55. 検索結果の取得 <ul><li>検索結果は、 SQLResult クラスから </li></ul><ul><li>取得します。 </li></ul><ul><li>SQLStatement の プロパティ になります。 </li></ul>
  56. 56. 検索結果の取得 <ul><li>private function onResult(event: </li></ul><ul><li>SQLEvent):void { </li></ul><ul><li>} </li></ul>
  57. 57. 検索結果の取得 <ul><li>private function onResult(event: </li></ul><ul><li>SQLEvent):void { </li></ul><ul><li>var result: SQLResult = </li></ul><ul><li>sqlStmt. getResult() ; </li></ul><ul><li>} </li></ul>
  58. 58. 検索結果の取得 <ul><li>SQLResult のプロパティ 、 data に </li></ul><ul><li>検索結果のデータを格納しています </li></ul>
  59. 59. 検索結果の取得 <ul><li>SQLResult のプロパティ 、 data に </li></ul><ul><li>検索結果のデータを格納しています。 </li></ul><ul><li>data プロパティは Array という配列の型です。 </li></ul>
  60. 60. 検索結果の取得 <ul><li>data プロパテイに </li></ul><ul><li>複数の Object 型のインスタンス が </li></ul><ul><li>格納しています。 </li></ul>
  61. 61. 検索結果の取得 <ul><li>data プロパテイに </li></ul><ul><li>複数の Object 型のインスタンス が </li></ul><ul><li>格納しています。 </li></ul><ul><li>Object データ 1 件 = テーブル 1 件 </li></ul><ul><li>キーがカラム名、値がカラムの値 </li></ul>
  62. 62. 検索結果の取得 <ul><li>var result: SQLResult = </li></ul><ul><li>sqlStmt. getResult() ; </li></ul><ul><li>var array:Array = result. data ; </li></ul>
  63. 63. 検索結果の取得 <ul><li>検索アプリを動かして </li></ul><ul><li>みましょう。 </li></ul>
  64. 64. SQL クラスをライブラリ化
  65. 65. SQL クラスをライブラリ化 <ul><li>今までお話したデータベース </li></ul><ul><li>アクセスを、簡易化したクラスを作成。 </li></ul>
  66. 66. SQL クラスをライブラリ化 <ul><li>// データベースアクセスクラス </li></ul><ul><li>var sql:SQLite = new SQLite(); </li></ul>
  67. 67. SQL クラスをライブラリ化 <ul><li>// データベースアクセスクラス </li></ul><ul><li>var sql:SQLite = new SQLite(); </li></ul><ul><li>sql.addEventListener(SQLEventResult, onResult); </li></ul>
  68. 68. SQL クラスをライブラリ化 <ul><li>// データベースアクセスクラス </li></ul><ul><li>var sql:SQLite = new SQLite(); </li></ul><ul><li>sql.addEventListener(SQLEventResult, onResult); </li></ul><ul><li>sql.text = “SQL 文” ; </li></ul><ul><li>sql.access(); </li></ul>
  69. 69. SQL クラスをライブラリ化
  70. 70. SQL クラスをライブラリ化
  71. 71. SQL クラスをライブラリ化
  72. 72. SQL クラスをライブラリ化
  73. 73. SQL クラスをライブラリ化
  74. 74. SQL クラスをライブラリ化
  75. 75. SQL クラスをライブラリ化 <ul><li>SQL クラスを使用した </li></ul><ul><li>サンプルアプリデモ </li></ul>
  76. 76. まとめ
  77. 77. まとめ <ul><li>SQLite エンジンの </li></ul><ul><li>ローカルデータベースが簡単に構築 </li></ul><ul><li>できます。 </li></ul>
  78. 78. まとめ <ul><li>SQLite エンジンの </li></ul><ul><li>ローカルデータベースが簡単に構築 </li></ul><ul><li>できます。 </li></ul><ul><li>AIR 対応プラットフォームであれば、 </li></ul><ul><li>共有ライブラリとして使いまわす事が </li></ul><ul><li>できます。 </li></ul>
  79. 79. <ul><li>ご清聴ありがとうございました。 </li></ul>

Views

Total views

1,899

On Slideshare

0

From embeds

0

Number of embeds

711

Actions

Downloads

8

Shares

0

Comments

0

Likes

0

×