データベースを使おう! (3/8)
作成:2009-12-28 11:17
更新:2010-05-11 13:53
更新:2010-05-11 13:53
■ソースコードの作成
では、ソースコードを作成しましょう。SampleApp.javaの内容を以下のリストのように修正してください。これで完成です。
適当にテキストを書いてから「保存」ボタンを押すと、そのメモがデータベースに保存されます。
保管しているメモは、「検索」ボタンで探し出します。検索したいテキストを書き、ボタンを押すと、そのメモを探して表示します。複数のメモが見つかった場合には、一番最初のメモを表示します。表示されるメモの冒頭にはメモを保管した日時が表示されます。
適当にテキストを書いてから「保存」ボタンを押すと、そのメモがデータベースに保存されます。
保管しているメモは、「検索」ボタンで探し出します。検索したいテキストを書き、ボタンを押すと、そのメモを探して表示します。複数のメモが見つかった場合には、一番最初のメモを表示します。表示されるメモの冒頭にはメモを保管した日時が表示されます。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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);
}
}
}
※関連コンテンツ