• 検索結果がありません。

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

N/A
N/A
Protected

Academic year: 2021

シェア "日 力力 生 行行 入 入 力力 生 用 方"

Copied!
33
0
0

読み込み中.... (全文を見る)

全文

(1)

本⽇日の講義内容  

1.  ファイル書き込み

 

1. 

出⼒力力ストリームの⽣生成  

2. 

サンプリアプリの作成  

3. 

作成したファイルの場所  

2.  ファイル読み込み  

1. 

⼊入⼒力力ストリームの⽣生成  

2. 

サンプリアプリの作成  

3. 

読み込み⽤用ファイルの作成  

3.  ファイル名の取得  

1. 

ファイル名リストを取得する⽅方法  

2. 

サンプリアプリの作成  

4.  SQLite

 

1. 

データベースヘルパー  

2. 

⾏行行データの挿⼊入  

3. 

カーソル  

4. 

サンプリアプリの作成  

(2)

第  1  章

(3)

ファイル書き込み  

• 

出⼒力力ストリートを⽣生成  

– 

Androidアプリは,ファイルに対する読み書きを実⾏行行することが可能である.  

– 

ただし,Androidでは,アプリケーションがアクセスすることのできるファイルは,

⾃自分がファイルを作る権限を持っているディレクトリに存在するものだけ

に限定される.  

– 

ファイルへの書き込みを実⾏行行したいときは,そのためのストリームを⽣生成する必要が

あります.  

– 

Androidでは,  

• 

android.content.Context    

– 

というクラスを継承するクラス(Activity  もそのひとつ)が保持する,  

• 

FileOutputStream  openFileOutput(String  name,  int  mode)  

– 

というメソッドを呼び出すことによって,出⼒力力ストリームを⽣生成することが可能であ

る.このメソッ  ドに渡す第⼀一引数は,データを書き込むファイル名である(パス名で

はなくてファイル名).第⼆二引数は,「ファイル作成  モード」(file  creation  mode)  

と呼ばれる、書き込みやファイル作成のモードを指定するための整数  

– 

openFileOutputは,引数で指定された名前を持つファイルに対してデータを書き込む

ための出⼒力力ストリームを⽣生成して,それを戻り値として返す.指定されたファイルが

存在しない場合は,その名前を持つファイルが新しく作られます.  

– 

openFileOutputが戻り値として返すのは,  java.io.FileOutputStreamというクラ

スの出⼒力力ストリームです.この出⼒力力ストリームを使ってファイルにデータを書き込む  

⽅方法は,Android  アプリケーションではない普通のJavaアプリケーションの場合と同

じです.  

(4)

ファイル書き込み  

• 

Androidプロジェクトの⽣生成  

– 

新規Androidプロジェクトを下記の設定値で作成.  

項⽬目名   設定値   プロジェクト名   Sample9   ビルドターゲット   Android  2.2にチェックを付ける   アプリケーション名   Sample9   パッケージ名   jp.ac.uot  

Create  Activity   FileWriteActivity  

• 

サンプルアプリケーションの動作  

• 

実⾏行行すると,2  個のエディットテキストと  1  個のボタンが表⽰示される  

• 

1個⽬目のエディットテキストにファイル名  

• 

2個⽬目のエディットテキストにファイルに書きこむ⽂文字列  

• 

を⼊入⼒力力して,ボタンをクリック  

• 

結果:  

 このアプリケーションは、⼊入⼒力力され⽂文字列を、指定された名前を持つファイルに

書き込む  

(5)

ファイル書き込み  

• 

main.xmlの編集  

<?xml  version="1.0"  encoding="u7-­‐8"?>   <LinearLayout  xmlns:android="hAp://schemas.android.com/apk/res/android"    android:orientaEon="verEcal"      android:layout_width="fill_parent"        android:layout_height="fill_parent"      >   <TableLayout  android:layout_width="fill_parent"      android:layout_height="wrap_content"      android:stretchColumns="1"      >   <TableRow>      <TextView  android:text="ファイル名"/>      <EditText  android:id="@+id/filename"/>   </TableRow>   <TableRow>    <TextView  android:text="文字列"/>      <EditText  android:id="@+id/ediAext"    android:layout_height="260sp"  android:scrollbars="verEcal"      android:gravity="top"    />   </TableRow>   </TableLayout>     <BuAon  android:id="@+id/write"    android:layout_width="wrap_content"      android:layout_height="wrap_content"    android:text="書き込む"      />   </LinearLayout>

(6)

ファイル書き込み  

• 

FileWriteActivity.javaの編集  

package  jp.ac.uot;   import  java.io.BufferedWriter;   import  java.io.FileOutputStream;   import  java.io.IOExcep=on;   import  java.io.OutputStreamWriter; import  android.app.Ac=vity;   import  android.content.Context;   import  android.os.Bundle;   import  android.u=l.Log;   import  android.view.View;   import  android.view.View.OnClickListener;   import  android.widget.BuFon;   import  android.widget.EditText;  

public  class  FileWriteAc=vity  extends  Ac=vity  {  

       /**  Called  when  the  acEvity  is  first  created.  */          @Override  

       public  void  onCreate(Bundle  savedInstanceState)  {                  super.onCreate(savedInstanceState);  

               setContentView(R.layout.main);  

final  BuFon  forward  =  (BuFon)  findViewById(R.id.write);                    forward.setOnClickListener(new  OnClickListener()  {  

               public  void  onClick(View  v)  {                    writeText();                  }  

               });          }  

(7)

ファイル書き込み  

• 

FileWriteActivity.javaの編集  

private  void  writeText()  {    

      final  EditText  filename  =  (EditText)  findViewById(R.id.filename);       final  EditText  ediFext  =  (EditText)  findViewById(R.id.edi/ext);          try  {  

         FileOutputStream  fos  =  openFileOutput(filename.getText().toString(),Context.MODE_PRIVATE);            OutputStreamWriter  osw  =  new  OutputStreamWriter(fos);    

         BufferedWriter  bw  =  new  BufferedWriter(osw);              bw.write(ediAext.getText().toString());  

         bw.flush();        bw.close();          }  catch  (IOExcep=on  e)  {  

         Log.d("FileWriteAc=vity",  e.getMessage());          }  

}   }  

(8)

ファイル書き込み  

(9)

ファイル書き込み  

• 

作成したファイルの場所  

– 

Androidアプリが,ファイルを作成する権限を持っているディレクトリは,  

• 

/data/data/パッケージ名/files

 

– 

 というディレクトリである.  

– 

したがって,サンプルアプリで作ったファイルは,  

• 

/data/data/jp.ac.uot/files  

– 

というディレクトリにファイルを作っているはず.  

– 

先ほど作ったアプリケーションが本当にファイルにデータを書き込んだかどうか,

Android  エミュレーターのシェルを使って確認してみよう.  

– 

まず,    

• 

adb  shell  

– 

というコマンドでシェルを起動して、次に、  

• 

 cat  /data/data/jp.ac.uot/files/ファイル名  

– 

というコマンドを⼊入⼒力力してください.  

– 

そうすると,先ほどファイルに書き込んだ⽂文字列が出⼒力力さ  れるはずです.  

(10)

第  2  章

(11)

ファイル読み込み  

• 

⼊入⼒力力ストリートを⽣生成  

– 

ファイルからの読み込みを実⾏行行したいときは,そのための⼊入⼒力力ストリームを⽣生成する

必要がある.  

– 

Androidでは,  Context  クラスを継承するクラスが保持している,  

• 

FileInputStream  openFileInput(String  name)  

– 

というメソッドを呼び出すことによって,⼊入⼒力力ストリームを⽣生成することが可能.  

– 

このメソッ  ドに渡す引数は、データを読み込むファイル名である.  

– 

openFileInputは,引数で指定された名前を持つファイルからデータを読み込むため

の⼊入⼒力力ストリームを⽣生成して,それを戻り値として返します.  

– 

openFileInputが戻り値として返すのは,  

• 

java.io.FileInputStream  

– 

というクラスの⼊入⼒力力ストリームです.  

– 

この⼊入⼒力力ストリームを使ってファイルからデータを読み込  む⽅方法は,Androidアプリ

ではない普通のJavaアプリケーションの場合と同様です.  

• 

Androidプロジェクトの⽣生成  

– 

新規Androidプロジェクトを下記の設定値

で作成.  

項⽬目名   設定値   プロジェクト名   Sample10   ビルドターゲット   Android  2.2にチェックを付ける   アプリケーション名   Sample10   パッケージ名   jp.ac.uot  

(12)

ファイル読み込み  

• 

main.xmlの編集  

<?xml  version="1.0"  encoding="uI-­‐8"?>   <LinearLayout  xmlns:android="hOp://schemas.android.com/apk/res/android"    android:orientaEon="ver=cal”      android:layout_width="fill_parent"    android:layout_height="fill_parent”    >   <TableLayout      android:layout_width="fill_parent"    android:layout_height="wrap_content"      android:stretchColumns="1"   >   <TableRow>   <TextView  android:text="ファイル名"  />   <EditText  android:id="@+id/filename"  />   </TableRow>   </TableLayout>   <BuAon      android:id="@+id/read"      android:layout_width="wrap_content"    android:layout_height="wrap_content"      android:text="読み込む"     />   <TextView      android:id="@+id/result"      android:layout_width="fill_parent"    android:layout_height="wrap_content"     />   </LinearLayout>

(13)

ファイル読み込み  

• 

FileReadActivity.javaの編集  

package  jp.ac.uot;   import  java.io.BufferedReader;   import  java.io.FileInputStream;   import  java.io.IOExcep=on;   import  java.io.InputStreamReader;   import  android.app.Ac=vity;   import  android.os.Bundle;   import  android.view.View;   import  android.view.View.OnClickListener;   import  android.widget.BuFon;   import  android.widget.EditText;   import  android.widget.TextView;  

public  class  FileReadAc=vity  extends  Ac=vity  {  

       /**  Called  when  the  acEvity  is  first  created.  */          @Override  

       public  void  onCreate(Bundle  savedInstanceState)  {                  super.onCreate(savedInstanceState);  

               setContentView(R.layout.main);  

               final  BuFon  forward  =  (BuFon)  findViewById(R.id.read);                    forward.setOnClickListener(new  OnClickListener()  {  

               public  void  onClick(View  v)  {                    readFile();                  }  

               });            }  

(14)

ファイル読み込み  

• 

FileReadActivity.javaの編集  

       private  void  readFile()  {    

         final  EditText  filename  =  (EditText)  findViewById(R.id.filename);              StringBuffer  sb  =  new  StringBuffer();    

         try  {  

         FileInputStream  fis  =  openFileInput(filename.getText().toString());            InputStreamReader  isw  =  new  InputStreamReader(fis);    

         BufferedReader  br  =  new  BufferedReader(isw);              String  line;    

         while  ((line  =  br.readLine())  !=  null)  {              sb.append(line);    

                   sb.append(System.getProperty("line.separator"));            }  

         br.close();            }  catch  (IOExcep=on  e)  {  

         sb.append(e.toString());          }    

       final  TextView  result  =  (TextView)  findViewById(R.id.result);          result.setText(sb.toString());  

    }   }  

このアプリが正しく動作するかどうかを確かめるために,  

読み込みの対象となるテキストファイルを作る必要がある.  

(15)

ファイル読み込み  

• 

ファイルの作成⽅方法  

– 

次のような⼿手順でテキストファイルを作ってください.

 

(1)   次のコマンド(コマンドプロント  or  ターミナル)で,シェルを起動  

 

 adb  shell  

(2)  次のコマンドで,カレントディレクトリを変更  

   

 cd  data/data/jp.ac.uot  

(3)  次のコマンドで,files  という名前のディレクトリ作成    

 

 mkdir  files  

(4)  次のコマンドで,カレントディレクトリを変更  

   

 cd  files  

(5)  次のコマンドで,ファイルに格納する⽂文字列の⼊入⼒力力を開始  

 

 cat  >  ファイル名  

(6)  ファイルの内容として,何⾏行行かの⽂文字列を⼊入⼒力力.  

(7)  ⼊入⼒力力を終了時は,コントロールキーを押しながら  D  のキーを押して,  

   エンターキーを押す.  

ファイルを作成した後に,Sample10を実⾏行行してみてください.  

ファイル名を⼊入⼒力力してボタンをクリックすると,  

ファイルの内容が表⽰示されるはずです.  

(16)

ファイル読み込み  

(17)

第  3  章

(18)

ファイル名の取得  

• 

ファイル名のリスト取得  

– 

Androidアプリは,ファイルを作成する権限を持っているディレクトリに存在し

ているファイルの名前のリストを取得することが可能である.  

– 

ファイル名のリストを取得したいときは,Context  クラスを継承するクラスが

持っている,  

• 

String[]  fileList()  

– 

というメソッドを呼び出す.  

– 

このメソッドは,ファイル名を要素とする配列を戻り値として返す.  

• 

Androidプロジェクトの⽣生成  

– 

新規Androidプロジェクトを下記の設定値で作成.  

項⽬目名   設定値   プロジェクト名   Sample11   ビルドターゲット   Android  2.2にチェックを付ける   アプリケーション名   Sample11   パッケージ名   jp.ac.uot  

Create  Activity   FileListActivity  

Sample11の動作確認には,ファイルをいくつか作る 必要がある.   Sample11がファイルを作成する権限を持っているの は、/data/data/jp.ac.uot/filesというディレクトリで すので,このディレクトリを作って,そこをカレント ディレクトリにして,  

 echo  android_seminar  >  test.txt  

というようなコマンドでファイルをいくつか作成して ください.  

そののち,Smaple11を実⾏行行し,ボタンをクリックす ると,ファイル名のリストが表⽰示されるはずです.  

(19)

ファイル名の取得  

• 

main.xmlの編集  

<?xml  version="1.0"  encoding="uI-­‐8"?>   <LinearLayout  xmlns:android="hOp://schemas.android.com/apk/res/android"    android:orientaEon="ver=cal"      android:layout_width="fill_parent"    android:layout_height="fill_parent">   <BuAon      android:id="@+id/list"      android:layout_width="wrap_content"    android:layout_height="wrap_content"      android:text="

ファイル名のリストの取得

"     />   <TextView      android:id="@+id/result"      android:layout_width="fill_parent"    android:layout_height="wrap_content"    />   </LinearLayout>

(20)

ファイル名の取得  

• 

FileListActivity.javaの編集  

package  jp.ac.uot;   import  android.app.Ac=vity;   import  android.os.Bundle;   import  android.view.View;   import  android.view.View.OnClickListener;   import  android.widget.BuFon;   import  android.widget.TextView;  

public  class  FileListAc=vity  extends  Ac=vity  {  

       /**  Called  when  the  acEvity  is  first  created.  */          @Override  

       public  void  onCreate(Bundle  savedInstanceState)  {                  super.onCreate(savedInstanceState);  

               setContentView(R.layout.main);  

               final  BuFon  forward  =  (BuFon)  findViewById(R.id.list);                  forward.setOnClickListener(new  OnClickListener()  {                  public  void  onClick(View  v)  {  

                 showFileList();                  }  

               });          }  

(21)

ファイル名の取得  

• 

FileListActivity.javaの編集  

private  void  showFileList()  {    

       String  name[]  =  fileList();    

       StringBuffer  sb  =  new  StringBuffer();            for  (int  i  =  0;  i  <  name.length;  i++)  {            sb.append(name[i]);    

         sb.append(System.getProperty("line.separator"));          }        

       final  TextView  result  =  (TextView)  findViewById(R.id.result);            result.setText(sb.toString());  

       }       }

(22)

第  4  章

SQLite  

(23)

SQLite  

• 

Androidにおけるデータ管理  

– 

Androidには,データベース管理システム  (database  management  system,  

DBMS)  が標準で搭載されている.  

– 

Androidでは,データ管理の⼿手段として,データベースを⼿手軽に扱うことが可能

である.Androidに標準で搭載されているデータベース管理システムは,  

• 

SQLite  

– 

というものであり,この章では,Androidアプリの中で  SQLite  を使ってデータ

ベースを操作する⽅方法について学んでいただきたい.  

SQLiteは,DBMSサーバーを必要としないという特徴を有しているため,DBMSが⽤用意されてい ないレンタルサーバーでもデータベースを⽤用いたアプリケーションを作成できるということで注 ⽬目を集めている.加えて,扱いの要領がMySQLやPostgreSQLと変わらないために導⼊入が簡単で あるという利点もあります.また,組み込み系のDBMS(Androidもその1つ)としては数少ない トランザクション処理対応型であるDBMSであるという点も特徴的であります.   SQLiteを扱う上で注意すべき点は,データがあくまでもローカルに保持されるために,複数の Webサーバーからアクセスを受けることができないという点が挙げられる.   複数のWebサーバーで運⽤用する場合,SQLiteは適しているとは⾔言いがたい.  

(24)

SQLite  

• 

データベースヘルパー  

– 

Androidアプリの中でSQLiteを使うためには,「データベースヘルパー」

(databasehelper)  と呼ばれるオブジェクトを作る必要がある.    

 データベースヘルパーは,  

• 

android.database.sqlite.SQLiteOpenHelper  

– 

という抽象クラスを継承するクラスから⽣生成されるオブジェクトである.  

SQLiteOpenHelper  のサブクラスでは,コンストラクタを定義する必要がある.  

 そして,そのためにはデータベースのファイル名とバージョン番号(整数)が  

 必要になる.だから,あらかじめ,  

• 

private  static  final  String  DATABASE_NAME  =   android_seminar.db ;  

• 

private  static  final  int  DATABASE_VERSION  =  1;  

– 

というように,それらを定数として定義しておくとよい.  

 コンストラクタは,ファイル名やバージョン番号などを引数にして,  

• 

SQLiteOpenHelper(Context  context,  String  name,  

 

 SQLiteDatabase.CursorFactory  factory,  int  version)  

– 

というスーパークラスのコンストラクタを呼び出すように定義する  

   (3個⽬目の引数は  null  で問題ない).  つまり,  

• 

public  DatabaseHelper(Context  context)  {}  

 super(context,  DATABASE_NAME,  null,  DATABASE_VERSION);  

(25)

SQLite  

• 

データベースヘルパー  

–  SQLiteOpenHelper  のサブクラスを定義するときには,必ず次の2つの抽象メソッドを実装し なければならない.  

•  void  onCreate(SQLiteDatabase  db)  

•  void  onUpgrade(SQLiteDatabase  db,  int  oldVersion,  int  newVersion)  

–  これらのメソッドが受け取る  1  個⽬目の引数は,「データベースオブジェクト」(database   object)  と呼ばれるオブジェクトであり,データベースに対するさまざまな操作は,このオブ ジェクトが持っているメソッドを呼び出すことによって実⾏行行することができる.   –  onCreateは,データベースが最初に⽣生成されるときに呼び出されるメソッドであり,通常, テーブルを⽣生成する  SQL  ⽂文を実⾏行行する.SQL  ⽂文は,データベースオブジェクトが持っている,   •  void  execSQL(String  sql)   –  というメソッドを使うことによって実⾏行行することができる.     –  onUpgrade  は,データベースのアップグレードが必要になったときに呼び出されるメソッドで あり,データベースに対する操作をしたいときは,まず,  

•  DatabaseHelper  helper  =  new  DatabaseHelper(this);  

–  というようにデータベースヘルパーを⽣生成して,その後で,次の⼆二つのメソッドのうちのどちら かを使って,データベースヘルパーからデータベースオブジェクトを   –  SQLiteDatabase  getReadableDatabase()     •  読み込み専⽤用のデータベースオブジェクトを取得.   –  SQLiteDatabase  getWritableDatabase()     •  読み込みも書き込みもできるデータベースオブジェクトを取得   –  データベースをクローズしたいときは,データベースオブジェクトが持っている次のメソッド  を 呼び出す.   •  void  close()  

(26)

SQLite  

• 

⾏行行データの挿⼊入  

– 

データベースに⾏行行を挿⼊入したいときは,データベースオブジェクトが持っている.  

• 

long  insert(String  table,  String  nullColumnHack,  ContentValues  

values)  

– 

というメソッドを利⽤用する.1個⽬目の引数はテーブル名で,3個⽬目の引数は,挿⼊入す

る⾏行行データが設定された,  

• 

android.content.ContentValues  

– 

というクラスのオブジェクトである.  

– 

ContentValues  クラスのオブジェクトは,  

• 

void  put(String  key,  String  value)  

• 

void  put(String  key,  Integer  value)  

– 

などのメソッドを持っている.  

– 

これらのメソッドを呼び出して,1個⽬目の引数として列の名前,  2  個⽬目の引数として

列の値を渡すことによって,  ContentValues  クラスのオブジェクトに⾏行行のデータ

を設定することが可能である.  

(27)

SQLite  

• 

カーソル  (SQL実⾏行行結果の⼊入れ物)  

– 

データベースオブジェクトは,  

 Cursor  query(String  table,  String[]  columns,  String  selection,  String[]  

selectionArgs,  String  groupBy,  String  having,  String  orderBy)  

– 

というメソッドを持っている.  

– 

このメソッドを呼び出すことによって,データベースを検索して,  

    その結果をカーソルとして取得することができます.  

– 

カーソルは,android.database.Cursorというインターフェースで宣⾔言されて

いる次のようなメソッドを使うことによって操作することができる.  

•  boolean  moveToFirst()      先頭の⾏行行へ移動する。カーソルが空の場合は偽を返す。   •  boolean  moveToNext()      次の⾏行行へ移動する。次の⾏行行が存在しない場合は偽を返す。  

•  int  getColumnIndexOrThrow(String  columnName)  

   列の名前からその列のインデックスを取得する。  

•  String  getString(int  columnIndex)    

 現在の⾏行行から、インデックスで指定された列の内容を取得して、⽂文字列で返す。  

•  int  getInt(int  columnIndex)    

 現在の⾏行行から、インデックスで指定された列の内容を取得して、整数で返す。  

•  void  close()    

 カーソルをクローズする。  

(28)

SQLite  

• 

Androidプロジェクトの⽣生成  

– 

新規Androidプロジェクトを下記の設定値で作成.  

項⽬目名   設定値   プロジェクト名   Sample12   ビルドターゲット   Android  2.2にチェックを付ける   アプリケーション名   Sample12   パッケージ名   jp.ac.uot  

Create  Activity   SQLiteActivity  

エディットテキストに⽂文字列を⼊入⼒力力

して,「メモの挿⼊入」というボタンを

クリックすると,⼊入⼒力力した⽂文字列を

含む⾏行行がデータベースに挿⼊入される  

-  サンプルアプリの動作  -  

<?xml  version="1.0"  encoding="uI-­‐8"?>   <LinearLayout  xmlns:android="hOp://schemas.android.com/apk/res/android"    android:orientaEon="ver=cal”    android:layout_width="fill_parent"    android:layout_height="fill_parent">   <EditText  android:id="@+id/memo"      android:layout_width="fill_parent"    android:layout_height="wrap_content"  />   <BuAon    android:id="@+id/insert"      android:layout_width="wrap_content"    android:layout_height="wrap_content"      android:text="メモの挿入"  />   <TextView  android:id="@+id/result"      android:layout_width="fill_parent"    android:layout_height="wrap_content"  />   </LinearLayout>

• 

main.xmlの編集  

(29)

SQLite  

package  jp.ac.uot;  

import  android.content.Context;  

import  android.database.sqlite.SQLiteDatabase;   import  android.database.sqlite.SQLiteOpenHelper;   public  class  DatabaseHelper  extends  SQLiteOpenHelper{  

private  sta=c  final  String  DATABASE_NAME  =  "android_seminar.db";     private  sta=c  final  int  DATABASE_VERSION  =  1;  

public  DatabaseHelper(Context  context,  String  name,  CursorFactory  factory,   int  version)  {  

 super(context,  DATABASE_NAME,  null,  DATABASE_VERSION);  

 //  TODO  Auto-­‐generated  constructor  stub   }  

@Override  

public  void  onCreate(SQLiteDatabase  db)  {  

 //  TODO  Auto-­‐generated  method  stub    db.execSQL(    

   "create  table  if  not  exists  android_seminar  ("  +      "id  integer  primary  key  autoincrement,"  +    

 "memo  text  )");   }  

• 

SQLiteOpenHelperをスーパークラスとする,      

(30)

SQLite  

@Override  

public  void  onUpgrade(SQLiteDatabase  db,  int  oldVersion,  int  newVersion)  {  

//  TODO  Auto-­‐generated  method  stub  

 db.execSQL("drop  table  if  exists  android_seminar");      onCreate(db);   }   }  

• 

SQLiteOpenHelperをスーパークラスとする,      

 DatabaseHelper.javaというJavaクラスを新規作成  

 

• 

SQLiteActivity.javaの編集  

package  jp.ac.uot;   import  android.app.Ac=vity;   import  android.content.ContentValues;   import  android.database.Cursor;   import  android.database.sqlite.SQLiteDatabase;   import  android.os.Bundle;   import  android.view.View;   import  android.view.View.OnClickListener;   import  android.widget.BuFon;   import  android.widget.EditText;   import  android.widget.TextView;  

public  class  SQLiteAc=vity  extends  Ac=vity  {  

(31)

SQLite  

• 

SQLiteActivity.javaの編集  

 /**  Called  when  the  ac=vity  is  first  created.  */  

 @Override  

 public  void  onCreate(Bundle  savedInstanceState)  {  

   super.onCreate(savedInstanceState);      setContentView(R.layout.main);  

   final  BuAon  write  =  (BuAon)  findViewById(R.id.insert);      write.setOnClickListener(new  OnClickListener()  {        public  void  onClick(View  v)  {  

       insertRow();  

       showTable();  

     }  

   });  

   helper  =  new  DatabaseHelper(this);      showTable();  

 }  

 private  void  insertRow()  {  

   final  EditText  ememo  =  (EditText)  findViewById(R.id.memo);      String  memo  =  ememo.getText().toString();  

   ememo.setText("");  

   ContentValues  values  =  new  ContentValues();      values.put("memo",  memo);  

   SQLiteDatabase  db  =  helper.getWritableDatabase();      db.insert("notepad",  null,  values);  

   db.close();    }  

(32)

SQLite  

• 

SQLiteActivity.javaの編集  

 private  void  showTable()  {  

   SQLiteDatabase  db  =  helper.getReadableDatabase();  

   Cursor  c  =  db.query("notepad",  new  String[]  {  "id",  "memo"  },  null,          null,  null,  null,  null);  

   StringBuffer  sb  =  new  StringBuffer();      while  (c.moveToNext())  {        sb.append(c.getInt(0));        sb.append("|");        sb.append(c.getString(1));        sb.append(System.getProperty("line.separator"));      }      c.close();      db.close();  

   final  TextView  result  =  (TextView)  findViewById(R.id.result);      result.setText(sb.toString());  

 }  

(33)

SQLite  

参照

関連したドキュメント

機器名称 相 銘板容量(kW) 入力換算 入力容量(kW) 台数 現在の契約電力.

パキロビッドパックを処方入力の上、 F8特殊指示 →「(治)」 の列に 「1:する」 を入力して F9更新 を押下してください。.. 備考欄に「治」と登録されます。

(1) コ ンテナ 貨物の 荷渡地に つい て、都市コード(国連LOCO DEの5桁コード。以下同じ。 ) を入力する。なお、仮陸揚貨物

※ 本欄を入力して報告すること により、 「項番 14 」のマスター B/L番号の積荷情報との関

Dual I/O リードコマンドは、SI/SIO0、SO/SIO1 のピン機能が入出力に切り替わり、アドレス入力 とデータ出力の両方を x2

   In cases where time does not allow for this form to be sent by mail, please hand to the applicant in a sealed envelope. Or, send from an offiical school e-mail account as a PDF

[r]