libro
www.tuyano.com
Google androidプログラミング入門

データベースを使おう! (3/8)

作成:2009-12-28 11:17
更新:2010-05-11 13:53

■ソースコードの作成

では、ソースコードを作成しましょう。SampleApp.javaの内容を以下のリストのように修正してください。これで完成です。

適当にテキストを書いてから「保存」ボタンを押すと、そのメモがデータベースに保存されます。

保管しているメモは、「検索」ボタンで探し出します。検索したいテキストを書き、ボタンを押すと、そのメモを探して表示します。複数のメモが見つかった場合には、一番最初のメモを表示します。表示されるメモの冒頭にはメモを保管した日時が表示されます。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

package jp.tuyano;


import java.io.*;
import java.util.Calendar;


import android.app.Activity;
import android.content.*;
import android.database.Cursor;
import android.database.sqlite.*;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;


public class SampleApp extends Activity {
    private static final String ID = "id";
    private DatabaseHelper dbhelper;
    private EditText edit;
    
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        dbhelper = new DatabaseHelper(this);
        setContentView(R.layout.main);
        edit = (EditText)this.findViewById(R.id.edit);
        Button load = (Button)this.findViewById(R.id.load);
        load.setOnClickListener(new MyLoadAdapter());
        Button save = (Button)this.findViewById(R.id.save);
        save.setOnClickListener(new MySaveAdapter());
    }
    
    // イベントクラス
    class MyLoadAdapter implements OnClickListener {


        @Override
        public void onClick(View v) {
            try {
                loadText();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }


    class MySaveAdapter implements OnClickListener {


        @Override
        public void onClick(View v) {
            Editable s = edit.getText();
            try {
                saveText(s.toString());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    // メモの保存
    public void saveText(String data) throws IOException{
        String t = Calendar.getInstance().getTime().toString();
        String m = edit.getText().toString();
        SQLiteDatabase db = dbhelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(DatabaseHelper.TITLE, t);
        values.put(DatabaseHelper.MEMO, m);
        db.insert(DatabaseHelper.TABLE_NAME,null,values);
        edit.setText(null);
    }
    //     メモの検索
    public void loadText() throws IOException{
        String m = edit.getText().toString();
        SQLiteDatabase db = dbhelper.getWritableDatabase();
        String query = "select * from " + DatabaseHelper.TABLE_NAME +
            " where " + DatabaseHelper.MEMO + " like '%" + m + "%';";
        Cursor c = db.rawQuery(query, null);
        if (c.moveToFirst()){
            edit.setText(c.getString(1) + "\n" + c.getString(2));
        }
    }
    
    // ヘルパークラスの定義
    private static class DatabaseHelper extends SQLiteOpenHelper {
        private static final String DATABASE_NAME = "mydata.db";
        private static final int DATABASE_VERSION = 2;
        private static final String TABLE_NAME = "memodata";
        private static final String TITLE = "title";
        private static final String MEMO = "memo";


        DatabaseHelper(Context context){
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
        
        @Override
        public void onCreate(SQLiteDatabase db) {
            String query = "create table " + TABLE_NAME + "(" +
                ID + " INTEGER PRIMARY KEY," +
                TITLE + " TEXT," +
                MEMO + " TEXT);";
            db.execSQL(query);
        }


        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL("drop table if exists " + TABLE_NAME);
            onCreate(db);
        }
    }
}

※関連コンテンツ

「Google androidプログラミング入門」に戻る