さてさて、今回はAndroid上のボタンからDBへの登録処理を行いたいと思います。
前回は、初期データとしてデータをINSERTしましたが、
今回は、保存ボタンをクリックすることによって、
EditTextからデータを取得して、DBに登録する形にしたいと思います。
まずは保存ボタンを追加してみました。
前に追加した、画面遷移ボタンの隣に保存用のボタンを用意してみました。
続いて、このSaveボタンをクリックしたときに、SQLiteのDBに入力した費目が登録できる形にします。
ボタンのイベントについては、他のボタンと同じようなつくりで実現できると思います。
とりあえずボタンの登録処理イベントを書いてみました。
// -----------------------------------------------------------------
// 以下保存処理
// -----------------------------------------------------------------
class SaveBtnListener implements OnClickListener {
/**
* クリックイベント
* @param クリックイベント対象コントロール
*/
public void onClick(View v) {
// 費目EditTextの取得
EditText expenseItemText = (EditText)findViewById(R.id.expenseItemTxt);
// 費目テーブル用クラス生成
ExpenseItem expenseItem = new ExpenseItem();
// 費目コードの生成
expenseItem.setExpenseItemCode("003");
// 費目入力値を取得する
expenseItem.setExpenseItemName(expenseItemText.getText().toString());
// DBへの登録処理
expenseItemDao.insert(expenseItem);
}
}
何の変哲もない感じですね。続いて、DBへの登録処理で呼んでいるExpenseItemDaoの
insertメソッドはこんな感じです。
/**
* 登録、登録処理
* @param expenseItem 登録対象データ
*/
public void insert(ExpenseItem expenseItem) {
// 登録用のクラスを生成
SQLiteDatabase db = helper.getWritableDatabase();
try {
// SQL用項目保持
ContentValues values = new ContentValues();
values.put(ExpenseItemConst.EXPENSE_ITEM_CODE,
expenseItem.getExpenseItemCode());
values.put(ExpenseItemConst.EXPENSE_ITEM_NAME,
expenseItem.getExpenseItemName());
// DBへの登録処理
db.insert(ExpenseItemConst.TABLE_NAME, null, values);
} finally {
db.close();
}
}
トランザクションを検討する場合は、このメソッドを呼び出す前にHelperクラスから
SQLiteDatabaseを生成したほうがいいかなと思ったりもします。
まあとりあえず今回は、1件だけ登録するテストなので、コードも003で固定にしてみました。
この状態で実行をして、
費目を入力して、saveボタンを押してみたところ・・・
何も起こりませんでした。(登録処理しか書いてないですからね。)
で、前回と同じように、EclipseのDDMSパースペクティブを開いて、
SQLiteの中身をエクスポートしてツールで見てみました。
うまく登録できていたみたいですね。
これで画面からの登録はできました。
insertができれば、後のDBへの処理はすべてできると思います。
後、欲しい機能と言ったら、『費目履歴』ボタンをクリックしたときに費目の一覧を表示する機能ですね。
どうやったら実現できるのかなぁ・・・
おいおい調べて次回の更新ではその部分について、記述しようかなと思います。
ではでは。
とりあえず食費を登録しようと思います。
返信削除MYKさんコメントありがとうございます。
返信削除最初に思い浮かんだのが、給料と食費でした。
我ながら安心のクオリティだと思います。。。