Android とデータベースの連結 1 データベースオープンヘルパー SQLite は データベースを1つのファイルで扱うので 指定のデータベースがないときは作成し あるときは 既存のファイルを開く という処理が必要です そういう一連の処理をしてくれるのが SQLiteOpenHelper クラス

Size: px
Start display at page:

Download "Android とデータベースの連結 1 データベースオープンヘルパー SQLite は データベースを1つのファイルで扱うので 指定のデータベースがないときは作成し あるときは 既存のファイルを開く という処理が必要です そういう一連の処理をしてくれるのが SQLiteOpenHelper クラス"

Transcription

1 Android Programming and Database IS04 組み込み 1

2 Android とデータベースの連結 1 データベースオープンヘルパー SQLite は データベースを1つのファイルで扱うので 指定のデータベースがないときは作成し あるときは 既存のファイルを開く という処理が必要です そういう一連の処理をしてくれるのが SQLiteOpenHelper クラスです これを継承して テーブル作成 初期うデータ挿入まで定義しておきます package jp.ac.neec.kmt.is04.takata; import android.content.context; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqlitedatabase.cursorfactory; import android.database.sqlite.sqliteopenhelper; public class DBHelper extends SQLiteOpenHelper { public DBHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor public void oncreate(sqlitedatabase db) { // TODO Auto-generated method stub String sql = "create table planet_table (" + "id integer primary key autoincrement," + "name text," + "image text" + ")"; // テーブル作成 sql="insert into planet_table (name,image) values(' 水星 ','mercury.jpg')"; sql="insert into planet_table (name,image) values(' 金星 ','venus.jpg')"; sql="insert into planet_table (name,image) values(' 地球 ','earth.jpg')"; sql="insert into planet_table (name,image) values(' 火星 ','mars.jpg')"; sql="insert into planet_table (name,image) values(' 木星 ','jupiter.jpg')"; 2

3 sql="insert into planet_table (name,image) values(' 土星 public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { // TODO Auto-generated method stub 2 主プログラムからオープンヘルパーを呼び出してデータベースを使えるようにする Activity.java SQLiteDatabase db; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); DBHelper dbhelper = new DBHelper(this, "planet_db", null, 1); db = dbhelper.getwritabledatabase(); new DBHelper(this, "planet_db", null, 1); このクラス, データベース名, 特別なカーソルを使うか?, DB 番号 SQLiteOpenHelper 戻り値 SQLiteDatabase SQLiteDatabase メソッド getreadabledatabase() 読み込み専用でデータベースを開く getwritabledatabase() 書き込みもできるデータベースを開く 3 SQL を発行する Select 文のようにデータを読み出す SQL と delete 文や insert 文のようにデータベースに影響を与える SQL とで扱いが違います データの挿入や削除の場合 sql="insert into photo_table (name,title) values('mercury.jpg',' 水星 ')"; 3

4 データの読み出しの場合 Cursor cursor = null; sql = "select * from photo_table"; cursor = db.rawquery(sql, null); 4 データの読み出しデータを読み出した瞬間は 先頭のデータの前を指しています カーソル データ1 データ2 まず 先頭のデータを指すようにカーソルを移動します cursor.movetofirst(); カーソル データ 1 データ 2 カーソル移動のメソッド (Cursor クラス ) 戻り値メソッド boolean move(into offset) 現在のカーソル位置から相対値で移動する boolean movetofirst() 先頭位置に移動する boolean movetolast() 最後の位置に移動する boolean movetonext() 次の行に移動する boolean movetoposition(int position) 絶対値に移動する boolean movetoprevious() 前の行に移動するいずれも移動できなかったとき false となる 4

5 カーソル位置のデータを読み込む データの種類によってメソッドが異なります 引数に カラム位置を指定する ( 最初のカラムは 0) String name=cursor.getstring(1); 戻り値 メソッド double getdouble(int columnindex) int getint(int columnindex) long getlong(int columnindex) String getstring(int columnindex) その他のメソッド戻り値 int int int String int int boolean boolean boolean boolean boolean メソッド getcolumncount() カラム数を得る getcolumnindex(string columnname) カラム名からカラム番号を得る 指定の名前がないときは-1 が返る getcolumnindexorthrow(string columnname) カラム名からカラム番号を得る 指定の名前がないときは例外を投げる getcolumnname(int columnindex) カラム番号からカラム名を得る getcount() 総行数を返す getposition() 現在カーソルがある位置を求める isafterlast() 最後の行より後にカーソルがあるか? isbeforfirst() 最初の行より前にカーソルがあるか? isfirst() 先頭行にカーソルがあるか? islast() 最終行にカーソルがあるか? isnull(int columnindex) 指定のカラムが NULL か? 5

6 プログラム例データベースの最初のレコードを表示する Activity package jp.ac.neec.kmt.is04.takata; import java.io.file; import android.app.activity; import android.database.cursor; import android.database.sqlite.sqlitedatabase; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.os.bundle; import android.os.environment; import android.widget.imageview; import android.widget.textview; public class HelloDBActivity extends Activity { SQLiteDatabase db; Cursor cursor = null; 6

7 /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); DBHelper dbhelper = new DBHelper(this, "planet_db", null, 1); db = dbhelper.getwritabledatabase(); String sql = "select * from planet_table"; cursor = db.rawquery(sql, null); cursor.movetofirst(); String name=cursor.getstring(1); String image=cursor.getstring(2); System.out.println("name="+name); File dir = Environment.getExternalStorageDirectory(); dir = new File(dir, "Pictures"); String path = dir.getabsolutepath(); Bitmap bitmap = BitmapFactory.decodeFile(path+"/"+image); TextView textview = (TextView) this.findviewbyid(r.id.planet_name); ImageView imageview = (ImageView) this.findviewbyid(r.id.planet_image); textview.settext(name); imageview.setimagebitmap(bitmap); データベースの場所 :data/data/( パッケージ名 )/database/ この中のファイルを削除すると データベースは削除されます 7

8 データベースからリストを表示する SDカード上の画像ファイルをすべて表示するのではなく データベースの情報をもとに SDカード上の画像を選んで表示するプロジェクトです 1 レイアウトの作成プログラミング編 p43 を参考に メインのレイアウトと 1 行分のレイアウトを設計してください ( 画像を載せる場合には 画像のサイズが大きくなりすぎないように 最初からサイズを指定しておくとよい ) android:layout_width="85dp" android:layout_height="85dp" 2 データベースヘルパークラスの作成データベースを作成し 初期データをインサートしておく そのとき コマンドで SQL が正しいことを確認しておく 3 Activity からでデータベースヘルパーのインスタンス作成し データベースとの連携に問題がないことを実験しておく ( データベースプログラミング編 p3) これはあとでアダプタに移動します Activity.java SQLiteDatabase db; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); DBHelper dbhelper = new DBHelper(this, "planet_db", null, 1); db = dbhelper.getwritabledatabase(); 4 1 行分のデータを格納するクラスの作成プログラミング編 p44 を参考に ただし 画像がある場合でも データベースに格納されているのはファイル名なので String にしておくのがおすすめ ビットマップ化は 表示のときに行う 5 アダプタの作成プログラミング編 p45 を参考に ただし 読み込むのはSDカードではなく データベースになります Adapter // コンストラクタ public DataListAdapter(Context c) { // レイアウトとデータを統合させるおまじない 8

9 layoutinflater = (LayoutInflater) c.getsystemservice(context.layout_inflater_service); // 袋をインスタンス化 list = new ArrayList<LineData>(); // ここからデータベースから情報を取得する DBHelper dbhelper = new DBHelper(c, "planet_db", null, 1); db = dbhelper.getwritabledatabase(); String sql = "select * from planet_table"; cursor = db.rawquery(sql, null); cursor.movetofirst(); while(cursor.movetonext()){ //DBから全部読む int id = cursor.getint(0); String name=cursor.getstring(1); String image=cursor.getstring(2); System.out.println(id + " " + name + " " + image); LineData one = new LineData(id, name, image); list.add(one); getview で画像のファイル名からビットマップに変換します そのために コンストラクタで Path を取得しておくとよいでしょう getcount でデータの個数を返してください プログラミング編 p46 参照 6 Activity で表示しますプログラミング編 p47 参照 9

10 リストをタップして 次の画面に進む リストをタップして 詳細情報を表示するようにします 1 リストにイベントをつけますプログラム編 p49 2 第 2 画面を設計します プログラム編 p51~ 3 第 2 画面をマニフェストに登録しますプログラム編 p55~ 4 Intent を使って第 2 画面を呼び出しますプログラム編 p55 5 第 2 画面から戻るボタンでメイン画面に戻りますプログラム編 p58 6 リスト中の選ばれたデータを第 2 画面に送りますここでは データベース 1 行分のデータをまるごと第 2 画面に送ります そのためには オブジェクトがシリアライズ化できなければなりません 文字や数値だけからなるデータはシリアライズ化できます public class LineData implements Serializable { private static final long serialversionuid = 1L; private int id; //ID private String name; // 名前 private String image; // 画像ファイル名 10

11 Activity public void onitemclick(adapterview<?> parent, View view, int position, long id) { // TODO Auto-generated method stub LineData data = adapter.getitem(position); Intent intent = new Intent(this, SecondActivity.class); intent.putextra("data", adapter.getitem(position)); startactivityforresult(intent, 1); 7 第 2 画面でデータをうけとり 表示します第 2Activity protected void oncreate(bundle savedinstancestate) { // TODO Auto-generated method stub super.oncreate(savedinstancestate); setcontentview(r.layout.second); subtext = (TextView) this.findviewbyid(r.id.textsub); subimage = (ImageView) this.findviewbyid(r.id.imagesub); Intent intent = this.getintent(); LineData data = (LineData) intent.getserializableextra("data"); subtext.settext(subtext.gettext() + data.getname()); File dir = Environment.getExternalStorageDirectory(); dir = new File(dir, "Pictures"); String path = dir.getabsolutepath(); Bitmap bitmap = BitmapFactory.decodeFile(path+"/"+ data.getimage()); subimage.setimagebitmap(bitmap); 第 2 画面で新たにデータベースを参照することもできます 11

12 main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" /> <ListView android:layout_height="match_parent" android:layout_width="match_parent" > </ListView> </LinearLayout> list_item.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:layout_width="85dp" 12

13 android:layout_height="85dp" android:layout_gravity="center_vertical" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:text="test" android:textsize="16sp" /> </LinearLayout> DBHelper package jp.ac.neec.kmt.is04.takata; import android.content.context; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqlitedatabase.cursorfactory; import android.database.sqlite.sqliteopenhelper; public class DBHelper extends SQLiteOpenHelper { public DBHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor public void oncreate(sqlitedatabase db) { // TODO Auto-generated method stub String sql = "create table planet_table (" + "id integer primary key autoincrement," + "name text," + "image text" 13

14 + ")"; // テーブル作成 sql="insert into planet_table (name,image) values(' 水星 ','mercury.jpg')"; sql="insert into planet_table (name,image) values(' 金星 ','venus.jpg')"; sql="insert into planet_table (name,image) values(' 地球 ','earth.jpg')"; sql="insert into planet_table (name,image) values(' 火星 ','mars.jpg')"; sql="insert into planet_table (name,image) values(' 木星 ','jupiter.jpg')"; sql="insert into planet_table (name,image) values(' 土星 public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { // TODO Auto-generated method stub LineData package jp.ac.neec.kmt.is04.takata; public class LineData implements Serializable { private static final long serialversionuid = 1L; private int id; //ID private String name; // 名前 private String image; // 画像ファイル名 // コンストラクタ public LineData(int id, String name, String image) { 14

15 this.id = id; this.name = name; this.image = image; // セッタ ゲッタ public int getid() { return id; public void setid(int id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; public String getimage() { return image; public void setimage(string image) { this.image = image; 15

16 DataListAdapter package jp.ac.neec.kmt.is04.takata; import java.io.file; import java.util.arraylist; import android.content.context; import android.database.cursor; import android.database.sqlite.sqlitedatabase; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.os.environment; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.baseadapter; import android.widget.imageview; import android.widget.textview; public class DataListAdapter extends BaseAdapter { private ArrayList<LineData> list; private LayoutInflater layoutinflater = null; private SQLiteDatabase db; private Cursor cursor = null; private String path; // コンストラクタ public DataListAdapter(Context c) { // レイアウトとデータを統合させるおまじない layoutinflater = (LayoutInflater) c.getsystemservice(context.layout_inflater_service); // 袋をインスタンス化 list = new ArrayList<LineData>(); // ここからデータベースから情報を取得する 16

17 DBHelper dbhelper = new DBHelper(c, "planet_db", null, 1); db = dbhelper.getwritabledatabase(); String sql = "select * from planet_table"; cursor = db.rawquery(sql, null); cursor.movetofirst(); while(cursor.movetonext()){ int id = cursor.getint(0); String name=cursor.getstring(1); String image=cursor.getstring(2); System.out.println(id + " " + name + " " + image); LineData one = new LineData(id, name, image); list.add(one); File dir = Environment.getExternalStorageDirectory(); dir = new File(dir, "Pictures"); path = dir.getabsolutepath(); System.out.println("path="+path); // public int getcount() { // TODO Auto-generated method stub return public Object getitem(int arg0) { // TODO Auto-generated method stub return null; 17

18 @Override public long getitemid(int arg0) { // TODO Auto-generated method stub return public View getview(int position, View convertview, ViewGroup parent) { // TODO Auto-generated method stub convertview = layoutinflater.inflate(r.layout.list_item, null); TextView idview = (TextView) convertview.findviewbyid(r.id.idarea); ImageView imageview = (ImageView) convertview.findviewbyid(r.id.imagearea); TextView nameview = (TextView)convertView.findViewById(R.id.nameArea); idview.settext("" + list.get(position).getid()); Bitmap bitmap = BitmapFactory.decodeFile(path+"/"+list.get(position).getImage()); imageview.setimagebitmap(bitmap); imageview.setscaletype(imageview.scaletype.center_crop); nameview.settext(list.get(position).getname()); System.out.println("name="+list.get(position).getName()); return convertview; public ArrayList<LineData> getlist(){ return list; 18

19 Activity package jp.ac.neec.kmt.is04.takata; import android.app.activity; import android.database.sqlite.sqlitedatabase; import android.os.bundle; import android.widget.listview; public class HelloDBListActivity extends Activity { /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); DataListAdapter adapter = new DataListAdapter(this); ListView listview = (ListView) this.findviewbyid(r.id.listmain); listview.setadapter(adapter); public void onitemclick(adapterview<?> parent, View view, int position, long id) { // TODO Auto-generated method stub LineData data = adapter.getitem(position); testtext.settext(data.getname()); Intent intent = new Intent(this, SecondActivity.class); intent.putextra("position", position); intent.putextra("data", adapter.getitem(position)); //intent.setaction(intent.action_view); startactivityforresult(intent, 1); 19

20 データベースの検索データベースは 必要なデータを必要なときに必要なだけ取り出せなければなりません そのための機能が検索です 検索して得られるのは 1 件だけとは限りません いろいろなケースを想定してアプリを設計しましょう 1 オープンヘルパーの作成テーブルを作成 初期データをインサートあらかじめコマンドを実行してSQL 文が正しいことを検証しておく public void oncreate(sqlitedatabase db) { // TODO Auto-generated method stub String sql = "create table town_table(" + "id integer primary key autoincrement," + "ken char(20) not null," + "town char(20)" +")"; // テーブル作成 sql = "insert into town_table (ken, town) values(' 東京 ', ' 蒲田 ')"; sql = "insert into town_table (ken, town) values(' 東京 ', ' 渋谷 ')"; sql = "insert into town_table (ken, town) values(' 東京 ', ' 新宿 ')"; 20

21 sql = "insert into town_table (ken, town) values(' 東京 ', ' 四谷 ')"; sql = "insert into town_table (ken, town) values(' 神奈川 ', ' 横浜 ')"; sql = "insert into town_table (ken, town) values(' 神奈川 ', ' 川崎 ')"; sql = "insert into town_table (ken, town) values(' 神奈川 ', ' 相模原 ')"; sql = "insert into town_table (ken, town) values(' 埼玉 ', ' 越谷 ')"; sql = "insert into town_table (ken, town) values(' 埼玉 ', ' 熊谷 ')"; sql = "insert into town_table (ken, town) values(' 千葉 ', ' 浦安 ')"; 2 ヘルパーの呼び出し Activity からヘルパーを呼び出して データベースを作成 DDMS でデータベースができていることを確認する data/data/< パッケージ名 >/< データベース名 > Activity public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); DBHelper dbhelper = new DBHelper(this, "town_db", null,1); db = dbhelper.getwritabledatabase(); // テスト TextView test1 = (TextView) this.findviewbyid(r.id.test_id); String sql = "select * from town_table"; Cursor cursor = db.rawquery(sql, null); test1.settext("" + cursor.getcount()); 21

22 3 データベース読み出しテストデータベースが入力されていることを確認するため 件数を調べて表示してみましょう TextView に ID をつけておきます public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); DBHelper dbhelper = new DBHelper(c, "town_db", null,1); db = dbhelper.getwritabledatabase(); String sql = "select * from town_table"; Cursor cursor = db.rawquery(sql, null); TextView textview = (TextView) this.findviewbyid(r.id.test_id); textview.settext("" + cursor.getcount()); 4 画面レイアウト検索を行うためのテキストエディタとボタン それに結果を表示するリストを作成しておきます main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id = "@+id/test_id" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <EditText 22

23 android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight="3" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onclick="onclickgo" /> </LinearLayout> <ListView android:layout_height="match_parent" android:layout_width="match_parent" > </ListView> </LinearLayout> リストの 1 行分の定義 list_item.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <TextView android:id="@+id/text_ken" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" /> <TextView android:id="@+id/text_town" android:layout_width="0dp" 23

24 android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> 5 データを受け取るクラスデータベースの 1 件分を受け取るクラスを作成 LineData.java 6 アダプタデータベースから読み込んでリストを作成 public DataListAdapter(Context c) { layoutflater = (LayoutInflater) c.getsystemservice(context.layout_inflater_service); list = new ArrayList<LineData>(); DBHelper dbhelper = new DBHelper(c, "town_db", null,1); db = dbhelper.getwritabledatabase(); String sql = "select * from town_table"; Cursor cursor = db.rawquery(sql, null); while(cursor.movetonext()){ int id = cursor.getint(0); String ken = cursor.getstring(1); String town = cursor.getstring(2); System.out.println(id + " " + ken + " " + town); LineData one = new LineData(id,ken, town); list.add(one); 24

25 7 ためしに全データ表示 Activity public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); DataListAdapter adapter = new DataListAdapter(this); ListView listview = (ListView) this.findviewbyid(r.id.result_id); listview.setadapter(adapter); 25

26 8 ボタンのイベントハンドラを記述 EditText からテキストを読み込んでおく これがキーワードになる Activity public void onclickgo(view view){ EditText ev = (EditText) this.findviewbyid(r.id.key_ed); String key = ev.gettext().tostring(); 9 アダプタにもう一つのコンストラクタ public DataListAdapter(Context c, String key) { layoutflater = (LayoutInflater) c.getsystemservice(context.layout_inflater_service); list = new ArrayList<LineData>(); DBHelper dbhelper = new DBHelper(c, "town_db", null,1); db = dbhelper.getwritabledatabase(); String sql = "select * from town_table where ken='" + key + "'"; Cursor cursor = db.rawquery(sql, null); while(cursor.movetonext()){ int id = cursor.getint(0); String ken = cursor.getstring(1); String town = cursor.getstring(2); System.out.println(id + " " + ken + " " + town); LineData one = new LineData(id,ken, town); list.add(one); 10 アダプタの呼び出し Activity public void onclickgo(view view){ EditText ev = (EditText) this.findviewbyid(r.id.key_ed); String key = ev.gettext().tostring(); DataListAdapter adapter = new DataListAdapter(this, key); ListView listview = (ListView) this.findviewbyid(r.id.result_id); listview.setadapter(adapter); 26

27 データベースの登録 データベースにデータを新規に登録します 1 まず 入力画面を作ります main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/test_tx" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <EditText android:id="@+id/ken_ed" 27

28 android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight="1" /> <EditText android:layout_height="wrap_content" android:layout_width="0dp" android:layout_weight="1" /> <Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:onclick="onclickreg" /> </LinearLayout> </LinearLayout> 2 データベースヘルパーを作りますすでにできているデータベースを使うときは どうせ oncreate は動かないので 何も書かなくてOK 3 データベースと連結します public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); DBHelper dbhelper = new DBHelper(this, "town_db", null, 1); db = dbhelper.getwritabledatabase(); 28

29 4 ボタンのイベント Activity public void OnClickReg(View view){ EditText kenarea = (EditText) this.findviewbyid(r.id.ken_ed); EditText townarea = (EditText) this.findviewbyid(r.id.town_ed); String ken = kenarea.gettext().tostring(); String town = townarea.gettext().tostring(); String sql = "insert into town_table (ken, town) values('" + ken + "','" + town + "')"; System.out.println(sql); // SQL を発行するまえに 正しいかどうか チェックしてください sql 文が log に表示されるので これを選んでファイルに保存するファイルを開いて コマンドプロンプトで実行してみる sqlite> insert into town_table (ken, town) values(' 東京 ',' 銀座 '); sqlite> select * from town_table; 1 東京 蒲田 2 東京 渋谷 3 東京 新宿 4 東京 四谷 5 神奈川 横浜 6 神奈川 川崎 7 神奈川 相模原 8 埼玉 越谷 9 埼玉 熊谷 10 千葉 浦安 11 東京 銀座 sqlite> 挿入されることを確認してから コメント文をはずして実行する 検索用アプリで確認する 29

30 銀座が追加されており 成功した 30

31 リストから個別へ リスト表示から 1 つ選んで個別詳細データを表示します セカンドアクティビティ側で あらためてデータベースを読み直します ID を指定して読み込みができるようにアダプタのコンストラクタを追加 // コンストラクタ public DataListAdapter(Context c) { String sql = "select * from planet_table"; dataset(c, sql); public DataListAdapter(Context c,int id) { String sql = "select * from planet_table where id="+id; dataset(c, sql); public void dataset(context c, String sql){ // レイアウトとデータを統合させるおまじない layoutinflater = (LayoutInflater) c.getsystemservice(context.layout_inflater_service); // 袋をインスタンス化 list = new ArrayList<LineData>(); // ここからデータベースから情報を取得する DBHelper dbhelper = new DBHelper(c, "planet_db", null, 1); 31

32 db = dbhelper.getwritabledatabase(); cursor = db.rawquery(sql, null); //cursor.movetofirst(); while(cursor.movetonext()){ int id = cursor.getint(0); String name=cursor.getstring(1); String image=cursor.getstring(2); System.out.println(id + " " + name + " " + image); LineData one = new LineData(id, name, image); list.add(one); File dir = Environment.getExternalStorageDirectory(); dir = new File(dir, "Pictures"); path = dir.getabsolutepath(); System.out.println("path="+path); セカンドアクティビティでアダプタを作り直して表示 protected void oncreate(bundle savedinstancestate) { // TODO Auto-generated method stub super.oncreate(savedinstancestate); setcontentview(r.layout.second); subtext = (TextView) this.findviewbyid(r.id.textsub); subimage = (ImageView) this.findviewbyid(r.id.imagesub); Intent intent = this.getintent(); int id = intent.getintextra("id", 0); subtext.settext("" + id); adapter = new DataListAdapter(this, id); int size = adapter.getcount(); LineData data = adapter.getitem(0); 32

33 subtext.settext(subtext.gettext() + data.getname()); dir = new File(dir, "Pictures"); String path = dir.getabsolutepath(); Bitmap bitmap = BitmapFactory.decodeFile(path+"/"+ data.getimage()); subimage.setimagebitmap(bitmap); 詳しい説明をファイルから読んでみよう ( とりあえずファイル固定 ) セカンドアクティビティ File dir = Environment.getExternalStorageDirectory(); String description = readfromfile("earth.txt"); TextView desarea = (TextView) this.findviewbyid(r.id.desriptionsub); desarea.settext(description); private String readfromfile(string filename){ String readstring = ""; String SDFile = android.os.environment.getexternalstoragedirectory().getpath() + "/Text/earth.txt"; File file = new File(SDFile); try{ FileInputStream fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis,"UTF-8"); BufferedReader br= new BufferedReader(isr); String s; while ((s = br.readline() )!= null){ readstring = readstring+s+" r n"; br.close(); isr.close(); fis.close(); catch(filenotfoundexception e){ e.printstacktrace(); 33

34 catch(unsupportedencodingexception e){ e.printstacktrace(); catch (IOException e) { e.printstacktrace(); return readstring; 34

35 CSV からデータベースに読み込み Excel で作成したデータを CSV で書き出して それを使ってデータベースに読み込みを行うと データベースのデータ作成が楽にできます Helper を作成します データベースがまだない場合には public void oncreate(sqlitedatabase db) { // TODO Auto-generated method stub ここでデータベースをCreateする Activity public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); // データベースに接続する DBHelper dbhelper = new DBHelper(this, "town_db", null,1); db = dbhelper.getwritabledatabase(); // ファイルに接続する String readstring=""; String SDFile = Environment.getExternalStorageDirectory().getPath() + "/Text/city.csv"; File file = new File(SDFile); try { // ストリームを確立する FileInputStream fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis,"UTF-8"); BufferedReader br= new BufferedReader(isr); String s; while ((s = br.readline() )!= null){ //1 行分の処理 String[] part = s.split(","); //, で分割する 35

36 //insert 文を組み立てる String sql = "insert into town_table (ken, town) values('"+part[0]+"', '"+part[1]+"')"; System.out.println(sql); readstring += sql + " r n"; //sql = "select * from town_table"; //db.rawquery(sql, null); br.close(); isr.close(); fis.close(); catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printstacktrace(); catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printstacktrace(); catch (IOException e) { // TODO Auto-generated catch block e.printstacktrace(); // 確認用にSQLを表示 TextView tv = (TextView) this.findviewbyid(r.id.text_id); tv.settext(readstring); 36

37 ファイル名を入力するエディットテキストを用意し データ取り込みボタンでデータベースに追加するアプリなども考えられます 37

38 正規表現 入力データに制限をかけ 不正なデータがデータベースに登録されないようにしましょうそういうときには 文字列のマッチングを調べる正規表現が便利です あいう 通常の文字リテラル. 任意の 1 文字 [ あいう ] ここに含まれる任意の 1 文字 [^あいう] ここに含まれる任意の 1 文字以外 ^あ 先頭の文字を指定 あ $ 最後の文字を指定 あ? 0 回または 1 回 あ + 1 回以上の繰り返し あ * 0 回以上の繰り返し あ {n, m n 回以上 m 回以下の繰り返し あ {n, n 回以上の繰り返し あ {n n 回の繰り返し ( あ い ) 選択どちらでもよい { グループ ( 繰り返しの単位指定 ) プログラム例 AlertDialog.Builder dlg; dlg = new AlertDialog.Builder(this); dlg.settitle("test"); dlg.setpositivebutton(" 閉じる ", null); EditText et = (EditText) this.findviewbyid(r.id.input_et); Pattern pattern = Pattern.compile("^あ.*$"); Matcher matcher = pattern.matcher(et.gettext()); if(matcher.matches()){ dlg.setmessage("ok"); System.out.println("OK"); else{ dlg.setmessage("ng"); System.out.println("NG"); dlg.show(); 38

39 アプリケーション作品制作について 設計項目 1. 画面遷移図 2. データベース仕様書 フィールド名 内容 型 備考 ( 内容説明と属性 primary key など ) id 主キー Integer primary Key autoincrement 3. 画像やテキストファイルがある場合には 保存場所 ( フォルダ階層 ) 4. データベースと画面との関係 39

日 力力 生 行行 入 入 力力 生 用 方

日 力力 生 行行 入 入 力力 生 用 方 日 力力 生 行行 入 入 力力 生 用 方 力力 生 行行 自 行行 生 力力 生 一 二 力力 生 力力 力力 方 ファイル書き込み Androidプロジェクトの 生成 新規Androidプロジェクトを下記の設定値で作成 項 目名 設定値 プロジェクト名 Sample9 ビルドターゲット Android 2.2にチェックを付 ける アプリケーション名 Sample9 パッケージ名 jp.ac.uot

More information

Microsoft Word - Android_SQLite講座_画面800×1280

Microsoft Word - Android_SQLite講座_画面800×1280 Page 5 5 アクティビティ ( 一覧 ) を作成する ファイル名 : src/jp/edu/mie/view010.java ( 新規作成 ) /* * View010 */ import android.app.activity; import android.content.intent; import android.os.bundle; import android.view.view;

More information

非推奨メソッド等の掲載について

非推奨メソッド等の掲載について 非推奨メソッド等の掲載について スマートにプログラミング Android 入門編第 2 版 SDK 4/2.3 対応 (2012 年 6 月 11 日発行第 2 版第 1 刷 ) において 一部現在では非推奨となったレイアウト及びメソッドの利用が掲載されておりました お詫びと共に補足 訂正させて頂きます 下記にその対応について示します 株式会社リックテレコム書籍出版部 ( 情報更新日 :2012.8.14)

More information

1: Preference Display 1 package sample. pref ; 2 3 import android. app. Activity ; 4 import android. content. Intent ; 5 import android. content. Shar

1: Preference Display 1 package sample. pref ; 2 3 import android. app. Activity ; 4 import android. content. Intent ; 5 import android. content. Shar Android 2 1 (Activity) (layout strings.xml) XML Activity (Intent manifest) Android Eclipse XML Preference, DataBase, File 3 2 Preference Preference Preference URL:[http://www.aichi-pu.ac.jp/ist/lab/yamamoto/android/android-tutorial/tutorial02/tutorial02.pdf]

More information

Microsoft Word - _Intent.doc

Microsoft Word - _Intent.doc public class Intent extends Object implements Parcelable Cloneable 英和 : 意図, 目的 intent が 意図 目的 を意味するように Android ではアプリ ( アクティビティ ) が何をしたいかという 意図 目的 のリクエスト メッセージをシステムに送ると, システムがそれを解釈 判断し, 適切なアクティビティへ渡す仕組みが備わっている

More information

2-2. TableLayout TableLayout は任意のビューを表形式で配置したい場合に利用する (HTML の Table に近いイメー ジ ) 2-3. FrameLayout ビューを重ねて表示するためのレイアウト 後から配置した部品が前面に来る仕様となっている 3. まとめ レイア

2-2. TableLayout TableLayout は任意のビューを表形式で配置したい場合に利用する (HTML の Table に近いイメー ジ ) 2-3. FrameLayout ビューを重ねて表示するためのレイアウト 後から配置した部品が前面に来る仕様となっている 3. まとめ レイア 1. レイアウトの基本 Android でレイアウトを作成する方法には XML で定義する方法 と プログラム上から作成する方法 の 2 つがある XML で定義する方が読みやすく変更も容易なので 基本的には XML でレイアウトを作成し 動的にレイアウトを変更したい場合にプログラムで記述するのが一般的である 2. レイアウトの種類 ビューを配置するベースとなるレイアウトについて説明する ここで紹介するレイアウト以外にも

More information

mazec テクニカルガイド第5版(Android版)

mazec テクニカルガイド第5版(Android版) 法人向け mazec テクニカルガイド 外部アプリケーション連携 ( Android 版 ) 第 6 版 Android は Google Inc. の登録商標です その他記載された会社名 製品名等は 各社の登録商標もしくは商標 または弊社の商標です 本書は株式会社 MetaMoJi が作成したものであり マニュアルの著作権は 株式会社 MetaMoJi に帰属します 本書の内容は予告なく変更することがあります

More information

データベースからデータの 読 み 込 み Cursorクラス

データベースからデータの 読 み 込 み Cursorクラス アンドロイドのデータベースについて SQlite データベースからデータの 読 み 込 み Cursorクラス Cursorでデータをとってきます // 注 意 定 数 でDatabaseクラスの 中 にあるとします public static final String ID = " id"; public static final String NAME = "_name"; // 例 えばこんなデータベースがあるとして(SQLiteOpenHelperクラスを

More information

オブジェクト指向プログラミング・同演習 5月21日演習課題

オブジェクト指向プログラミング・同演習 5月21日演習課題 オブジェクト指向プログラミング 同演習 5 月 21 日演習課題 問題 1 配列の例外処理例外が発生する可能性のある処理を try で囲み その後に catch で例外を捕捉します 例外処理の終了処理として finally が行われます これは書かなくて自動的に行われます 提出課題 1 (Kadai052301.java) 以下のプログラムは例外処理をしていない ArrayIndexOutOfBoundsException

More information

文字列操作と正規表現

文字列操作と正規表現 文字列操作と正規表現 オブジェクト指向プログラミング特論 2018 年度只木進一 : 工学系研究科 2 文字列と文字列クラス 0 個以上の長さの文字の列 Java では String クラス 操作 文字列を作る 連結する 文字列中に文字列を探す 文字列中の文字列を置き換える 部分文字列を得る 3 String クラス 文字列を保持するクラス 文字列は定数であることに注意 比較に注意 == : オブジェクトとしての同等性

More information

「Android Studioではじめる 簡単Androidアプリ開発」正誤表

「Android Studioではじめる 簡単Androidアプリ開発」正誤表 Android Studio Android 2016/04/19 Android Studio Android *1 Android Studio Android Studio Android Studio Android Studio Android PDF : Android Studio Android Android Studio Android *2 c R TM *1 Android

More information

補足資料 キーイベント処理サンプル package jp.co.keyevent; import android.app.activity; import android.os.bundle; import android.view.keyevent; import android.widget.t

補足資料 キーイベント処理サンプル package jp.co.keyevent; import android.app.activity; import android.os.bundle; import android.view.keyevent; import android.widget.t 補足資料 キーイベント処理サンプル package jp.co.keyevent; import android.app.activity; import android.os.bundle; import android.view.keyevent; import android.widget.toast; public class KeyEventSampleActivity extends Activity

More information

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   Copyright 2013 NTT DATA INTRAMART CORPORATION 1 Top 目次 intra-mart Accel Platform イベントナビゲータ開発ガイド初版 2013-07-01 改訂情報概要イベントフローの作成 更新 削除をハンドリングするイベントフローを非表示にする回答を非表示にするリンクを非表示にするタイトル コメントを動的に変更するリンク情報を動的に変更するナビゲート結果のリンクにステータスを表示する

More information

PowerPoint Presentation

PowerPoint Presentation Webデザイン特別プログラムデータベース実習編 3 MySQL 演習, phpmyadmin 静岡理工科大学総合情報学部幸谷智紀 http://na-inet.jp/ RDB の基礎の基礎 RDB(Relational DataBase) はデータを集合として扱う データの取り扱いはテーブル (= 集合 ) の演算 ( 和集合, 積集合 ) と同じ データベースには複数のテーブルを作ることができる

More information

Javaプログラムの実行手順

Javaプログラムの実行手順 戻り値のあるメソッド メソッドには 処理に使用する値を引数として渡すことができました 呼び出し 側からメソッドに値を渡すだけでなく 逆にメソッドで処理を行った結果の値を 呼び出し側で受け取ることもできます メソッドから戻してもらう値のことを もどりち戻り値といいます ( 図 5-4) 図 5-4. 戻り値を返すメソッドのイメージ 戻り値を受け取ることによって ある計算を行った結果や 処理に成功したか失

More information

Brekeke PBX - Version 2.1 ARSプラグイン開発ガイド

Brekeke PBX - Version 2.1 ARSプラグイン開発ガイド Brekeke PBX Version 2.1 ARS プラグイン開発ガイド Brekeke Software, Inc. バージョン Brekeke PBX v2.1 ARS プラグイン開発ガイド, 2008 年 2 月 著作権本書の著作権は Brekeke Software, Inc. にあります Copyright 2003-2008 Brekeke Software, Inc. 本書の一部または全部を

More information

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String 目次 1.SqlCtl クラスリファレンス 2 (1)Connect() メソッド 2 (2)DisConnect() メソッド 3 (3)Commit() メソッド 3 (4)Rollback() メソッド 4 2.SqlStm クラスリファレンス 5 (1)Prepare() メソッド 5 (2)Execute() メソッド 6 (3)Release() メソッド 6 (4)Immediate()

More information

Android Layout SDK プログラミング マニュアル

Android Layout SDK プログラミング マニュアル プログラミングマニュアル Version 1.3.0 用 更新履歴 年月日 バージョン 履歴 2014.09.08 1.2.0.0 新規 (Layout Utilities ユーザーズ ガイド ) 2016.08.16 1.3.0.0 モバイル端末用レイアウトで直線部品と矩形部品に対応 モバイル端末用レイアウトファイルを CLFX から XML へ変更 Layout Print Engine から

More information

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac Actual4Test http://www.actual4test.com Actual4test - actual test exam dumps-pass for IT exams Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN

More information

第1章 ビジュアルプログラミング入門

第1章 ビジュアルプログラミング入門 付録 A 既存のクラスの利用の仕方 第 7 章では フレームクラス (NewJFrame.java) とそこから呼び出されるクラス (Meibo.java など ) を同じプロジェクト内 つまり同じパッケージ内に定義しました しかし 一般には 別のパッケージ ( フォルダ ) に保管されているクラスを利用する場合があります ここでは その方法を説明します なお フォルダは Java の用語ではパッケージに対応するので

More information

プログラミング基礎I(再)

プログラミング基礎I(再) 山元進 クラスとは クラスの宣言 オブジェクトの作成 クラスのメンバー フィールド 変数 配列 メソッド メソッドとは メソッドの引数 戻り値 変数の型を拡張したもの 例えば車のデータベース 車のメーカー 車種 登録番号などのデータ データベースの操作 ( 新規データのボタンなど ) プログラムで使う部品の仕様書 そのクラスのオブジェクトを作ると初めて部品になる 継承 などの仕組みにより カスタマイズが安全

More information

Prog2_6th

Prog2_6th 2017 年 11 月 2 日 ( 木 ) 実施 インテントインテントとは Android アプリは複数のアクティビティを持つことが出来, また, アクティビティ以外の要素も持つので, 複数のアクティビティ間, アクティビティとアクティビティ以外の要素との間といったオブジェクト間を結び付ける仕組みが必要となる その役割を担うのがインテントで, 複数のアプリ間やアプリとシステムとの間もインテントで結び付けることが出来る

More information

2

2 プログラミング応用演習 b 10 月 5 日演習課題 2016/10/05 PAb 演習課題 プログラム仕様書作成課題 課題クラスを読み 次に示すクラスの仕様書を完成させよ なお 仕様書は クラス 1 つに付き 1 つ作成す る 加えて 図 1 のようなクラス継承の模式図を作成せよ < クラス名 のプログラム仕様書 > 作成者 : 学籍番号 名前 (1) クラスクラス名 : クラス名 説明 : クラスが何を表現しているか

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 12 回目クラス 今日の講義で学ぶ内容 クラスとは クラスの宣言と利用 クラスの応用 クラス クラスとは 異なる複数の型の変数を内部にもつ型です 直観的に表現すると int 型や double 型は 1 1 つの値を管理できます int 型の変数 配列型は 2 5 8 6 3 7 同じ型の複数の変数を管理できます 配列型の変数 ( 配列変数 ) クラスは double

More information

目 次 Java GUI 3 1 概要 クラス構成 ソースコード例 課題...7 i

目 次 Java GUI 3 1 概要 クラス構成 ソースコード例 課題...7 i Java GUI 3 Java GUI 3 - サンプルプログラム (1) - 2011-09-25 Version 1.00 K. Yanai 目 次 Java GUI 3 1 概要...1 2 クラス構成...2 3 ソースコード例...3 4 課題...7 i 1 概要まずは簡単なサンプルプログラムをみながら Java GUI の基本的なことを学びましょう 本サンプルは 図に示すようなひとつのメイン画面を使用します

More information

PowerPoint Presentation

PowerPoint Presentation 上級プログラミング 2( 第 5 回 ) 工学部情報工学科 木村昌臣 今日のテーマ データベース入門 データベースシステムの用意の仕方 データベースを作ってみる データベースを使ってみる データベースプログラミング JDBCを使った検索プログラム JDBCを使った更新プログラム データベース入門 今回の説明は Windows 環境を前提としているため Linux など他のプラットフォーム上で作業を行う場合は

More information

データの作成方法のイメージ ( キーワードで結合の場合 ) 地図太郎 キーワードの値は文字列です キーワードの値は重複しないようにします 同じ値にする Excel データ (CSV) 注意キーワードの値は文字列です キーワードの値は重複しないようにします 1 ツールバーの 編集レイヤの選択 から 編

データの作成方法のイメージ ( キーワードで結合の場合 ) 地図太郎 キーワードの値は文字列です キーワードの値は重複しないようにします 同じ値にする Excel データ (CSV) 注意キーワードの値は文字列です キーワードの値は重複しないようにします 1 ツールバーの 編集レイヤの選択 から 編 手順 4 Excel データを活用する ( リスト / グラフ 色分け ) 外部の表データ (CSV 形式 ) を読み込み リスト表示やカード表示 その値によって簡単なグラフ ( 円 正方形 棒の 3 種類 ) や色分け表示することができます この機能を使って地図太郎の属性情報に無い項目も Excel で作成し CSV 形式で保存することにより 自由に作成することができます (Excel でデータを保存するとき

More information

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None クイック検索検索 目次 Copyright 2013 NTT DATA INTRAMART CORPORATION 1 Top 目次 intra-mart Accel Platform イベントナビゲータ開発ガイド初版 2013-07-01 None 改訂情報概要イベントフローの作成 更新 削除をハンドリングするイベントフローを非表示にする回答を非表示にするリンクを非表示にするタイトル コメントを動的に変更するリンク情報を動的に変更するナビゲート結果のリンクにステータスを表示する

More information

Microsoft Word - tutorial3-dbreverse.docx

Microsoft Word - tutorial3-dbreverse.docx 株式会社チェンジビジョン使用バージョン :astah* 6.0, 6.1 [ ] サンプル サポート対象外 目次 DB リバースを使ってみよう ( サンプル サポート対象外 ) 2 ご利用の前に 2 予備知識 2 データベースの環境設定をしてみよう 2 astah* データベースリバースコンポーネントを使用してみよう 5 作成した asta ファイルを astah* professional で開いてみよう

More information

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid("text_box02_id"); if ("001" == statee

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid(text_box02_id); if (001 == statee 全体のヒント 1. テキストボックスの制御 1.1. 日付入力日付の入力ボックスは フォーカスが入った時にスラッショを消し フォーカスが他の項目等に移るとスラッシュが加わるようにする オンフォーカス 20100101 オフフォーカス 2010/01/01 1.1.1 オンフォーカス時にスラッシュを消す入力項目のスラッシュを消すには include/function.js ファイル内の var delslash

More information

スライド 1

スライド 1 WindowsForm サンプル解説 S2Container.NET, S2Dao.NET コミッタ 藤井宏明 1 S2Container.NET の Examples フォルダに付属する WindowsSample の解説です 概要 アプリケーション アーキテクチャー ソリューション構成 プロジェクト概要 サンプル説明 2 Ⅰ. アプリケーション アーキテクチャー 3 アプリケーション アーキテクチャー

More information

About me! 足立昌彦 / +Masahiko.Adachi )! バイドゥ株式会社技術顧問 (Simeji)! 株式会社カブク Co-Founder! Google Developer Expert (Android)

About me! 足立昌彦 / +Masahiko.Adachi )! バイドゥ株式会社技術顧問 (Simeji)! 株式会社カブク Co-Founder! Google Developer Expert (Android) Discover Support Library Masahiko Adachi @adamrokcer / +Masahiko.Adachi 28 th Sep, 2013 About me! 足立昌彦 ( @adamrocker / +Masahiko.Adachi )! バイドゥ株式会社技術顧問 (Simeji)! 株式会社カブク Co-Founder! Google Developer Expert

More information

PowerPoint Presentation

PowerPoint Presentation ソフトウェア演習 B GUI を持つ Java プログラムの 設計と実装 4.1 例題 :GUI を持った電卓を作ろう プロジェクトCalculator パッケージ名 :example ソースファイル : Calculator.java GUI.java EventProcessor.java 2 4.2 GUI とイベント処理 GUI の構成 :Swing GUI の場合 フレーム JFrame:

More information

import android.database.sqlite.sqlitedatabase.cursorfactory; public class DatabaseHelper extends SQLiteOpenHelper { /* データベース名 */ private final static

import android.database.sqlite.sqlitedatabase.cursorfactory; public class DatabaseHelper extends SQLiteOpenHelper { /* データベース名 */ private final static Android データベース処理の便利 ( ヘルパー ) クラスの利用 SQLiteOpenHelper クラス 必ずしもこのヘルパークラスは利用する必要はないのですが 利用すると以下のような利 点があります このクラスを使うと発生する3つの利点 ) 1 指定したデータベースファイルが存在していないときは自動的にファイル生成を行う事ができる 2 DB オープン時 もしテーブルが存在していないときは自動的にテーブル生成を行う事ができる

More information

JAVA入門

JAVA入門 JAVA 入門後期 10 情報処理試験例題解説 H14 年度秋問 8 次の Java プログラムの説明及びプログラムを読んで, 設問に答えよ プログラムの説明 ディジタル論理回路シミュレータを作成するためのクラスとテスト用クラスである (1) ゲートを表す抽象クラス Gate のサブクラスとして, NOT ゲートを表すクラス NotGate 及び AND ゲートを表すクラス AndGate を定義する

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション オブジェクト指向 プログラミング演習 第 4 回継承 オーバーライド ポリモルフィズム 今日のお題 継承 オーバーライド ポリモルフィズム 継承 (inherit) あるクラス c のサブクラス s を定義する : このとき s は c を継承していると言う 何かの下位概念を表すクラスは その上位概念を表すクラスの属性や機能を ( 基本的には ) 使える 継承の例 大学生 長崎県立大学の学生 大学生を継承する概念

More information

メソッドのまとめ

メソッドのまとめ メソッド (4) 擬似コードテスト技法 http://java.cis.k.hosei.ac.jp/ 授業の前に自己点検以下のことがらを友達に説明できますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか

More information

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1

Java (9) 1 Lesson Java System.out.println() 1 Java API 1 Java Java 1 Java (9) 1 Lesson 7 2008-05-20 Java System.out.println() 1 Java API 1 Java Java 1 GUI 2 Java 3 1.1 5 3 1.0 10.0, 1.0, 0.5 5.0, 3.0, 0.3 4.0, 1.0, 0.6 1 2 4 3, ( 2 3 2 1.2 Java (stream) 4 1 a 5 (End of

More information

Microsoft PowerPoint - chap10_OOP.ppt

Microsoft PowerPoint - chap10_OOP.ppt プログラミング講義 Chapter 10: オブジェクト指向プログラミング (Object-Oriented Programming=OOP) の入り口の入り口の入り口 秋山英三 F1027 1 例 : 部屋のデータを扱う // Test.java の内容 public class Test { public static void main(string[] args) { double length1,

More information

データアダプタ概要

データアダプタ概要 データベース TableAdapter クエリを実行する方法 TableAdapter クエリは アプリケーションがデータベースに対して実行出来る SQL ステートメントやストアドプロシージャで TableAdapter で型指定されたメソッドと仕て公開される TableAdapter クエリは 所有るオブジェクトのメソッドと同様に 関連付けられたメソッドを呼び出す事に依り実行出来る TableAdapter

More information