|
|
第324話 測定した血圧をデータベースに記録する先日,また血液検査をした。血圧の薬に加え,コレステロールの薬を飲み出したので,効き具合を測るためだ。前回は149,前々回は186あったLDLコレステロールが95になっていた。あっけないものである。186から146まで下げるのに食事制限やらウォーキングやら,いろいろ努力をしたつもりなのだが,朝一つ小さな薬を飲むだけで,146から95になってしまうのである。 「でも,今回はガンマGTPが悪いのですよ。飲み過ぎましたか」と先生。142という数値を見せられた。自己最高,いや最悪である。そう言えば,検査の前日も飲んでいたし・・・。「はい,やっちゃいました」と答えるしかなかった。 さて,前回(第323話「第323話 Xperiaに血圧を記録しよう」)の続きである。今回は測定した血圧の各値をSQLiteデータベースに記録する。Androidの場合,データベースを扱うにはデータベースヘルパークラスを作る。
--------------------------------------------------------------
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DBNAME = "bpdata.db";
private static final int DBVERSION = 1;
private static final String CREATE_TABLE_SQL =
"create table bldpress"
+ "(rowid integer primary key autoincrement,"
+ "max integer not null,"
+ "min integer not null,"
+ "pulse integer not null,"
+ "date text not null,"
+ "time text not null)";
public DatabaseHelper (Context context) {
// DB作成
super(context,DBNAME,null,DBVERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_SQL);
}
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,
int newVersion) {
// do nothing
}
}
--------------------------------------------------------------
データベースヘルパークラスはSQLiteOpenHelperクラスを継承する。ヘルパークラスでやるべきことは血圧を記録するテーブルを作成することである。
第316話「Androidでデータベースを使う」に書いたように,SQLiteデータベースのデータ型は種類が少ないので,主キー,最高血圧,最低血圧,脈拍をInteger型に,日付,時刻はText型にする。 データベースヘルパークラスでは,コンストラクタでDBを作成し,DB作成時(onCreate)にdb.execSQL(CREATE_TABLE_SQL)でテーブルを作成する。 Activityクラスを継承するメインのクラスでは,onCreateでヘルパークラスのオブジェクトを生成し,記録ボタンを押されたときの処理をイベントリスナーに仕掛ける。
--------------------------------------------------------------
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
dbhelper = new DatabaseHelper(this);
Button btn = (Button) this.findViewById(R.id.Button01);
btn.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
saveBldpress();
}
});
edit01 = (EditText)this.findViewById(R.id.EditText01);
edit02 = (EditText)this.findViewById(R.id.EditText02);
edit03 = (EditText)this.findViewById(R.id.EditText03);
edit04 = (EditText)this.findViewById(R.id.EditText04);
edit05 = (EditText)this.findViewById(R.id.EditText05);
}
--------------------------------------------------------------
dbhelperやEditText オブジェクトであるedit01などは,このコードの上の部分で,private宣言している。
--------------------------------------------------------------
private void saveBldpress(){
SQLiteDatabase db = dbhelper.getWritableDatabase();
int int01 = Integer.parseInt(edit01.getText().toString());
int int02 = Integer.parseInt(edit02.getText().toString());
int int03 = Integer.parseInt(edit03.getText().toString());
String str04 = edit04.getText().toString();
String str05 = edit05.getText().toString();
ContentValues values = new ContentValues();
values.put("max", int01);
values.put("min", int02);
values.put("pulse", int03);
values.put("date", str04);
values.put("time", str05);
db.insert("bldpress", null, values);
db.close();
}
--------------------------------------------------------------
仕掛ける処理の内容は,データベースを読み書き両用モードで開き,レコードを追加してデータベースを閉じるというものである。各EditTextの値をgetText()で取得し,ContentValuesオブジェクトに値を積んで,db.insertでレコードを追加している。 今回は省略しているが,本来は適宜,エラー処理を入れるべき個所である。
>> エミュレータで実行する
|
|