1 / 33

データベース

データベース. 6/15. 前回の内容. エラー がでた時の対処法 画像の読み込みと表示 画像の回転 画像の拡大 図形の描画. 本日の内容. データベースの利用 検索のオプション ファイルの有無の確認 宿題に ついて. データベースの利用. Android には SQLite というデータベースが搭載されています。. データベース と は?. データベースとは、 相互に関連するデータを整理・統合し、検索しやすくしたファイル。また、このようなファイルの共用を可能にするシステム。. 例:ある コンビニのデータベース. フィールド. テーブル.

kylene
Download Presentation

データベース

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. データベース 6/15

  2. 前回の内容 • エラーがでた時の対処法 • 画像の読み込みと表示 • 画像の回転 • 画像の拡大 • 図形の描画

  3. 本日の内容 • データベースの利用 • 検索のオプション • ファイルの有無の確認 • 宿題について

  4. データベースの利用 • AndroidにはSQLiteというデータベースが搭載されています。

  5. データベースとは? • データベースとは、相互に関連するデータを整理・統合し、検索しやすくしたファイル。また、このようなファイルの共用を可能にするシステム。 例:あるコンビニのデータベース フィールド テーブル 商品テーブル 顧客テーブル データ

  6. データベースを操作するには • SQL(Structured Query Language:構造化問合せ言語)を使い、データの挿入や取り出す条件などを指定する データベース SQL 処理の結果

  7. 実行結果 • DBTestActivity.javaを実行してみましょう

  8. ソースコード String str = "data/data/" + getPackageName() + "/Sample2.db"; SQLiteDatabasedb = SQLiteDatabase.openOrCreateDatabase(str, null); db.execSQL("DROP TABLE IF EXISTS product"); db.execSQL("CREATE TABLE product" + "(id INTEGER PRIMARY KEY, name STRING, price INTEGER)"); String[] qry = { "INSERT INTO product(name, price) VALUES ('鉛筆', 80)", "INSERT INTO product(name, price) VALUES ('消しゴム', 50)", "INSERT INTO product(name, price) VALUES ('定規', 200)", "INSERT INTO product(name, price) VALUES ('コンパス', 300)", "INSERT INTO product(name, price) VALUES ('ボールペン', 100)"}; for (int i = 0; i < qry.length; i++) { db.execSQL(qry[i]); } ① ② ③

  9. ソースコード Cursor cr = db.rawQuery("SELECT * FROM product",null); startManagingCursor(cr); ArrayAdapter<String> ad = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); while (cr.moveToNext()) { inti = cr.getColumnIndex("id"); intn = cr.getColumnIndex("name"); intp = cr.getColumnIndex("price"); intid = cr.getInt(i); String name = cr.getString(n); intprice = cr.getInt(p); String row = id + "------" + name + ":" + price + "円"; ad.add(row); } lv.setAdapter(ad); ll.addView(lv); db.close(); ④ ⑤ ⑥

  10. ① データベースの作成 • データベースを作成・保存してあるデータベースを開くにはopenOrCreateDatabaseメソッドを使います SQLiteDatabase.openOrCreateDatabase(str, null); データベースの場所と名前 Nullで固定

  11. ② テーブルの作成 • データベースを作成したらテーブルを作成します • テーブルの作成はCREATE TABLE <テーブル名> (フィールド名 型 オプション)で指定します 例 CREATE TABLE product (id INTEGER PRIMARY KEY, name STRING, price INTEGER) ※赤:フィールド1 青:フィールド2 緑:フィールド3 を表す ※ PRIMARY KEYは複数のデータにおいて絶対に重複しないフィールド ※ オプションは省略可

  12. ② テーブルの作成 • また、1つのデータベースに同じ名前のテーブルが存在してはいけないので、すでに同じ名前のテーブルが存在したら削除しています // productというなまえのテーブルがあったら削除 DROP TABLE IF EXISTS product

  13. ③ データの挿入 • データの挿入にはテーブルとフィールドを指定してINSERT INTOを使います INSERT INTO product(name, price) VALUES ('鉛筆', 80) フィールドに追加する値 指定したテーブルのフィールド テーブル名

  14. ④ データの検索 • データの検索にはSELECTを使い、Cursorオブジェクトで実際に結果を取得します Cursor cr = db.rawQuery("SELECT * FROM product",null); startManagingCursor(cr); 取ってくる結果 *は全部を意味する 検索するテーブル

  15. ⑤ 検索結果の取得 • SELECTを実行するとCursorオブジェクトに結果が返ってくるのでgetColumnIndexメソッドでフィールドのインデックスを、getInt等でデータの型に合わせて取り出します inti = cr.getColumnIndex("id"); int n = cr.getColumnIndex("name"); int p = cr.getColumnIndex("price"); int id = cr.getInt(i); String name = cr.getString(n); int price = cr.getInt(p); フィールドのインデックスを 取得 Idは数値型なのでgetIntで取り出す nameは文字列なので getStringで取り出す priceは数値型なのでgetIntで取り出す

  16. ⑥ データベースを閉じる • SQLによるデータベースの操作が終わったら、最後に必ずcloseメソッドでデータベースを閉じます db.close();

  17. 練習 • 右の図のようにデータをいくつか追加してみましょう

  18. 検索のオプション • SQLでは、ある条件に該当するデータのみを取り出したり、順番に並び替えたりすることが出来ます

  19. 条件の指定 • SELECT文の中で WHERE 条件 を追加すると条件に合致したデータのみを取り出すことが出来ます 例 SELECT * FROM product WHERE price>=200

  20. 数値による検索 • 例えばpriceが150以上であるデータだけを取り出したい時は以下のように書きます SELECT * FROM product WHERE price>=150

  21. 文字列による検索 • 例えばnameが鉛筆であるデータだけを取り出したい時は以下のように書きます SELECT * FROM product WHERE name='鉛筆' ‘’で囲むのを忘れずに

  22. 文字列による検索 • nameに特定の語句を含むデータだけを取り出したい時は以下のように書きます SELECT * FROM product WHERE name LIKE'%ン%' ‘%%’で囲むのを忘れずに

  23. 並べ替え • SELECT文の中で ORDER BY フィールド名 をつけるとデータを指定したフィールドが小さい順に並び替えます SELECT * FROM product ORDER BY price

  24. ファイルの有無の確認 • 作成したデータベースが、ちゃんと保存されてるか確認してみましょう FileListActivity.javaを実行してください

  25. 実行結果 • データベースがあることがわかります ※画像は2つ作成した例

  26. ソースコード LinearLayoutll = new LinearLayout(this); ll.setOrientation(LinearLayout.HORIZONTAL); setContentView(ll); ListViewlv = new ListView(this); File fl = new File("data/data/" + getPackageName()); String[] str = fl.list(); ArrayAdapter<String> ad = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, str); lv.setAdapter(ad); ll.addView(lv); ① ②

  27. 保存しているディレクトリ情報の取得 • Androidでは、data/data/(パッケージ名)ディレクトリにユーザーデータが保存されているのでFileクラスを使って情報を取得します File fl = new File("data/data/" + getPackageName()); パッケージ名を取得するメソッド

  28. 存在するファイル名の取得 • Fileクラスでユーザーデータがあるディレクトリ情報を取得したらlistメソッドを使うだけで、そのディレクトリにあるファイル名の一覧を文字列の配列で取得できます String[] str = fl.list();

  29. 宿題 以下のファイルをzipファイルにまとめて期限までに提出すること • 前回の講義で作った絵を描くプログラム • 実行結果のスクリーンショットとプログラムの説明をWordファイルにまとめる 提出先 : toshihiro.tamura.3k@stu.hosei.ac.jp rhuang@hosei.ac.jp 締め切り: 6/16(土) 23:59 ※ファイル名は(学籍番号).zipにしてください

  30. 課題 DBTestのデータベースにいくつかデータを追加し、priceが100以上のデータをpriceの値が低い順に並び替えて表示してみましょう

  31. 課題 • EditTextを使って、入力したデータをデータベースについかできるようにしてみましょう

  32. 検索で使える演算子

  33. SQLによる削除 • 削除にはDELETE FROM<削除するテーブル><削除するフィールド> WHERE <削除の条件>を使う 例 DELETE FROM product * WHERE name == ‘鉛筆’ • ※条件に合致するデータが複数ある場合は全てのデータが削除されるので注意

More Related