2011年7月31日日曜日

ボタンイベントによるDB登録

さてさて、今回は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への処理はすべてできると思います。
後、欲しい機能と言ったら、『費目履歴』ボタンをクリックしたときに費目の一覧を表示する機能ですね。

どうやったら実現できるのかなぁ・・・

おいおい調べて次回の更新ではその部分について、記述しようかなと思います。

ではでは。

2 件のコメント:

  1. とりあえず食費を登録しようと思います。

    返信削除
  2. MYKさんコメントありがとうございます。
    最初に思い浮かんだのが、給料と食費でした。
    我ながら安心のクオリティだと思います。。。

    返信削除