2011年5月29日日曜日

レコードの追加

ボタンクリックでレコードを追加してみる

package com.myDatabase;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.content.ContentValues;
import android.content.Context;

public class MyDatabase extends Activity {
    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //ヘルパークラスのインスタンスを作成します。
        MyDBHelper helper = new MyDBHelper(this);

        //書き込み可能でデータベースを開く
        //(ここでDBファイルがなかったら作成する(onCreate)
        SQLiteDatabase db = helper.getWritableDatabase();

        Cursor c = db.query("myDatabaseTable", new String[] { "name", "age" },
          null, null, null, null, null);

        boolean isEof = c.moveToFirst();
        TextView textView1 = (TextView)findViewById(R.id.textView1);

        String text="";
        while (isEof) {
            text += String.format("%s : %d歳\r\n", c.getString(0), c.getInt(1));
            isEof = c.moveToNext();
        }

        textView1.setText(text);

        c.close();
        db.close();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
    
    public void SetRecordOnClick(View v) {
     MyDBHelper helper = new MyDBHelper(this);
     SQLiteDatabase db = helper.getWritableDatabase(); 
     
     ContentValues values = new ContentValues();
     
     //追加するデータ
     values.put("name", "新しいデータ");
     values.put("age", "1");
     db.insert("myDatabaseTable", null, values);
     
     //データの検索
        Cursor c = db.query("myDatabaseTable", new String[] { "name", "age" },
          null, null, null, null, null);

        boolean isEof = c.moveToFirst();
        TextView textView1 = (TextView)findViewById(R.id.textView1);

        String text="";
        while (isEof) {
            text += String.format("%s : %d歳\r\n", c.getString(0), c.getInt(1));
            isEof = c.moveToNext();
        }

        textView1.setText(text);

    }

    //DB利用には、SQLiteOpenHelper抽象クラスを継承する必要がある。
    public class MyDBHelper extends SQLiteOpenHelper {
        public MyDBHelper(Context context) {
            super(context, "database.db", null, 1);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
         //データベースのバージョンが変わる場合に呼び出される。
        }

        @Override
        //ここでデータベース作成(コンストラクタに渡されたDBファイル名が存在しない場合に呼ばれる)
        public void onCreate(SQLiteDatabase db) {
            // テームルを作成
            db.execSQL(
                "create table myDatabaseTable("+
                "name text not null,"+
                "age text"+
                ");"
            );

            // Insert文のSQLを実行してレコードを挿入
            db.execSQL("insert into myDatabaseTable(name,age) values ('聖徳太子', 10);");
            db.execSQL("insert into myDatabaseTable(name,age) values ('夏目漱石', 20);");
        }
    }
}

ダウンロード

関連記事

0 件のコメント:

コメントを投稿