創造工学設計I 電子情報工学科4年(前期) 12回目 (09/07/2015) 担当 古山彰一 ac

Slides:



Advertisements
Similar presentations
5-7 音声の再生 (1)テキストスピーチ A. 手順 音声による英文のスピーチ ・ Android 1.6 以降の実機で可能。 ・ Android では英語であれば エミュレータで可能。それ以前は実機のみ。 ・機種によっては音声がインストールされていない場合があるので、 Android.
Advertisements

オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
8-4 Google マップの利用 1.地図を表示 ( エミュレータでも可能 ) Android API キーを取得しておくこと。 【 AndroidManifest.xml 】 ・・・
Apache Camel Data Format Component Apache Camel
Remote Method Invocation
情報理工学部 情報システム工学科 ラシキアゼミ 3年 H 井奈波 和也
5-4 画像の表示 (1)複数画像の表示 A.手順 (基本は5-2(1)Image View参照) ①画像ファイルをリソースに追加
3-1 MySQLについて 発表者:藤村元彦 自然言語処理研究室.
IO - 入出力 小西 亨.
創造工学設計I 電子情報工学科4年(前期) 8回目 (04/6/2015) 担当 古山彰一 ac
GPSはじめの第一歩 Android編 2009/03/28 山本 慎也.
プログラミング基礎I(再) 山元進.
Apache Camel Data Format Component Apache Camel
6-2 データベース 1.SQLite SQLを単純化した SQLite を使ってデータベースを操作 表「fruit」
8-2 センサ関係 1.センサの種類 種類センサの内容 TYPE_ACCELEROMETER 加速度センサ TYPE_MAGNETIC_FIELD 地磁気センサ TYPE_PROXIMITY 近接センサ TYPE_TEMPATURE 温度センサ TYPE_LIGHT 照明センサ TYPE_GRAVITY.
アルゴリズムとプログラミング (Algorithms and Programming)
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
第20章 Flyweight ~同じものを共有して無駄をなくす~
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
アルゴリズムとデータ構造 2011年6月20日
マイクロソフト Access での SQL 演習 第1回 SQL問い合わせ(クエリ)
プログラミング演習3 第2回 GUIの復習.
2004/05/13 3-4 データ型(カラムタイプ) について 発表者:藤村元彦 自然言語処理研究室.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
8.1 例外処理 8.2 catchブロックの検索 8.3 throwステートメント 8.4 例外とエラークラス 8.6 独自の例外
ソフトウェア工学 知能情報学部 新田直也.
JDBC J2EE I 第4回 /
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
第1回.リレーショナルデータベースを使ってみよう
第1回.リレーショナルデータベースを使ってみよう
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
日本Androidの会 事務局長 SIPropプロジェクト 代表 グロースエクスパートナーズ 今村 謙之(いまむら のりつな)
第6回 2007年6月1日 応用Java (Java/XML).
第3回.テーブルの結合 結合条件 SQL を用いた結合問い合わせ.
第3回.テーブルの結合 結合条件 SQL を用いた結合問い合わせ.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
Javaによる Webアプリケーション入門 第7回
プログラミング演習3 第2回 GUIの復習.
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
3-3.テーブルを更新する 2004年 4月22日(木) 01T6074X 茂木啓悟.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
ソフトウェア制作論 平成30年11月21日.
JDBC J2EE I (データベース論) 第5回 /
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
EntityManager と EJB QL EJB 3.0 コース 第8回 2006年8月5日.
C#プログラミング実習 第3回.
JAVA入門⑥ クラスとインスタンス.
アルゴリズムとデータ構造 2012年6月21日
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
第1回.リレーショナルデータベースを使ってみよう
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
5-2 基本的なウィジェット (1)Toggle Button A. 配置
SQL J2EE I (データベース論) 第3回 /
7.アプリケーションの連携 7-1 インテント(intent) 1.アプリケーションの連携とは
7-3 サービスの連携 1.サービスとは 画面を持たずに処理を行う【AndroidManifest.xmlへの追加】 …
5.基本API 5-1 レイアウト ウィジェットの並べ方を指定するには、 パレットのレイアウト(Layoutでは以下の8種類)を配置する。
SQL データベース論 第11回.
5-6 SurfaceView による高速描画 (1)SurfaceViewを使う A. SurfaceView とは
5-5 文字列の描画 (1)基本的な文字列描画 A.手順
Presentation transcript:

創造工学設計I 電子情報工学科4年(前期) 12回目 (09/07/2015) 担当 古山彰一 (shoichi@nc-toyama. ac 創造工学設計I 電子情報工学科4年(前期) 12回目 (09/07/2015) 担当 古山彰一 (shoichi@nc-toyama.ac.jp)

入力したテキストをファイルに保存する package jp.ac.nc_toyama.chap14_2_1; import android.support.v7.app.ActionBarActivity; import android.app.AlertDialog; import android.content.*; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.*; public class MainActivity extends ActionBarActivity implements View.OnClickListener { //本ではView.が無いが、それだと走らない(03072015SF) //データベース名を定数に登録 private final static String DB_NAME = "testDB.db"; //テーブル名を登録 private final static String DB_TABLE = "testTable"; //データベースのバージョンを登録 private final static int DB_VERSION = 1; //データベース用のオブジェクトを格納するフィールド変数 private SQLiteDatabase databaseObject; //エディットテキスト private EditText varEditText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //リニアレイアウトの生成 LinearLayout varlayout = new LinearLayout(MainActivity.this); varlayout.setBackgroundColor(Color.rgb(153,153,153)); varlayout.setOrientation(LinearLayout.VERTICAL); setContentView(varlayout); //エディットテキストの生成 varEditText = new EditText(MainActivity.this); varEditText.setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); varEditText.setLines(6); varlayout.addView(varEditText); //ボタンの生成 varlayout.addView(makeButton("データを書き込みます", "write")); varlayout.addView(makeButton("データを読み込みます", "read")); //データベースオブジェクトの作成 DatabaseHelper dbHelperObject = new DatabaseHelper(MainActivity.this); databaseObject = dbHelperObject.getWritableDatabase(); } //データベースからの読み込みを行うメソッド private String readToDB() throws Exception { //データベースからテーブルを読み込む Cursor cursor = databaseObject.query( DB_TABLE, new String[]{"id", "info"}, "id='0'", null, null, null, null); //cursor内のレコード数が0の場合は例外処理を行うインスタンスを生成 if (cursor.getCount() == 0) throw new Exception(); //カーソルの位置を先頭のレコードに移動 cursor.moveToFirst(); //cursorオブジェクト内のレコードデータをString型に変換 String valueCursor = cursor.getString(1); //カーソルを閉じる cursor.close(); //レコードのデータを呼び出し元に返す return valueCursor; } //ダイアログを表示するメソッドの定義 private static void showDialog(Context context, String title, String text) { AlertDialog.Builder varAlertDialog = new AlertDialog.Builder(context); varAlertDialog.setTitle(title); varAlertDialog.setMessage(text); varAlertDialog.setPositiveButton("OK", null); varAlertDialog.show(); } //ヘルパークラスの定義 private static class DatabaseHelper extends SQLiteOpenHelper { //データベースを作成、または開く、管理するための処理 public DatabaseHelper(Context context) { //ヘルパークラスクラスのコンストラクターの呼び出し super(context, DB_NAME, null, DB_VERSION); } //テーブルを作成するメソッドの定義 @Override public void onCreate(SQLiteDatabase db) { //テーブルの作成 db.execSQL("CREATE TABLE IF NOT EXISTS " + DB_TABLE + "(id text primary key, info text)"); } //データベースをアップグレードするメソッドの定義 @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //古いバージョンのテーブルが存在する場合はこれを削除 db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE); //新規テーブルの作成 onCreate(db); } } } //ボタンを生成するメソッド private Button makeButton(String text, String tag) { Button varButton = new Button(MainActivity.this); varButton.setText(text); varButton.setTag(tag); varButton.setOnClickListener(MainActivity.this); varButton.setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); return varButton; } //ボタンクリック時の処理 public void onClick(View v) { String varTag = (String) v.getTag(); if (varTag.equals("write")) { try { //データベースへの書き込み String writeString = varEditText.getText().toString(); writeToDB(writeString); } catch (Exception e) { //書き込み失敗時にメッセージを表示 showDialog(this, "ERROR", "データの書き込みに失敗しました"); } } else if (varTag.equals("read")) { try { //データベースの読み込み String readString = readToDB(); varEditText.setText(readString); } catch (Exception e) { showDialog(this, "ERROR", "データの読み込みに失敗しました"); } } } //データベースへの書き込みを行うメソッドの定義 private void writeToDB(String editedStrings) throws Exception { // ContentValues型のインスタンスを生成 ContentValues contentValObject = new ContentValues(); //カラムの作成 contentValObject.put("id", "0"); //カラムの追加 contentValObject.put("info", editedStrings); //レコードを上書き int numberOfColumns = databaseObject.update(DB_TABLE, contentValObject, null, null); //レコードが存在しない場合は新規に作成 if (numberOfColumns == 0) databaseObject.insert(DB_TABLE, null, contentValObject); }

アプリを実行する なにか文章を入力する 「データを書き込みます」をタップする アプリを終了する アプリを再起動する 「データを読み込みます」をタップする 最初に書き込んだ文章が表示される

データの検索を行うデータベースアプリ ポイントが5000以上のデータを抽出 // ArrayAdapterのインスタンスを生成 ArrayAdapter<String> ad = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1); while (cursor.moveToNext()) { //各カラムのidを取得 int idId = cursor.getColumnIndex("id"); int idName = cursor.getColumnIndex("name"); int idPoint = cursor.getColumnIndex("point"); int id = cursor.getInt(idId); String name = cursor.getString(idName); int point = cursor.getInt(idPoint); String row = id + " " + name + " " + point + "ポイント"; ad.add(row); } varListView.setAdapter(ad); varLinearLayout.addView(varListView); //データベースオブジェクトをクローズ dbObject.close(); } } package jp.ac.nc_toyama.chap14_2_2; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.app.*; import android.database.*; import android.database.sqlite.*; import android.os.*; import android.widget.*; public class MainActivity extends ActionBarActivity { ListView varListView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout varLinearLayout = new LinearLayout(this); varLinearLayout.setOrientation(LinearLayout.HORIZONTAL); setContentView(varLinearLayout); ListView varListView = new ListView(this); //データベース名と保存場所を登録 String dbName = "data/data/" + getPackageName() + "/myDatabase1.db"; //データベースオブジェクトを生成 SQLiteDatabase dbObject = SQLiteDatabase.openOrCreateDatabase(dbName, null); //古いテーブルを破棄するSQL文を登録 String dropTable = "DROP TABLE IF EXISTS namelist"; //3つのカラムを持つテーブルを作成するSQL文を登録 String createTable = "CREATE TABLE namelist" + "(id INTEGER PRIMARY KEY, name STRING, point INTEGER)"; //データを追加するSQL文を登録 String[] insertData = { "INSERT INTO namelist(name, point) VALUES ('秀和太郎', 1680)", "INSERT INTO namelist(name, point) VALUES ('安藤ロイド', 5480)", "INSERT INTO namelist(name, point) VALUES ('Java 郁代', 7860)", "INSERT INTO namelist(name, point) VALUES ('須磨 穂', 12890)", "INSERT INTO namelist(name, point) VALUES ('愛 穂武', 1020)", "INSERT INTO namelist(name, point) VALUES ('秀和次郎', 680)"}; //検索を行うSQL文の登録(0の部分を任意のポイント数に書き換える) String query = "SELECT * FROM namelist WHERE point >= 5000"; //ポイントが5000以上のデータを抽出 //古いテーブルを破棄 dbObject.execSQL(dropTable); //テーブルを作成 dbObject.execSQL(createTable); //データを追加 for (int i = 0; i < insertData.length; i++) { dbObject.execSQL(insertData[i]); } //データへアクセスするためのカーソルオブジェクトを生成してクエリーを実行 Cursor cursor = dbObject.rawQuery(query, null); ポイントが5000以上のデータを抽出

課題1~3をpdfファイルにしてメールで提出しなさい。 課題1:Chap14_2_1をプログラミングし、実行しなさい。また、その画面のハードコピーを取りなさい。 課題2:Chap14_2_2をプログラミングし、実行しなさい。画面のハードコピーを取りなさい。 課題3:Chap14_2_2について、 全てのデータ(ポイントが0以上)を表示するようにプログラムを変更しなさい。 全てのデータの表示が降順になるようにしなさい(ポイントが高いものが上、低いものが下になるように)。 課題1~3をpdfファイルにしてメールで提出しなさい。 締切 本日中(23:59まで) 提出先 shoichi@nc-toyama.ac.jp 課題ファイル名 12i4??.pdf (??は二桁の出席番号)