忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/11/22 20:31 |
Android2.2 名刺管理アプリケーションを作ってみる4日目その2

データベースハンドラを作成します。

class DatabaseOpenHelper extends SQLiteOpenHelper{}

この一行を書いてエラー部分をクリックするだけで下のように最低限の形ができあがります。
Eclipse便利すぎだろ。

/src/com.example.bizcart/db/DatabaseOpenHelper.java

package com.example.bizcard.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

class DatabaseOpenHelper extends SQLiteOpenHelper{
	public DatabaseOpenHelper(Context context, String name,
			CursorFactory factory, int version) {
		super(context, name, factory, version);
	}
	@Override
	public void onCreate(SQLiteDatabase sqlitedatabase) {}
	@Override
	public void onUpgrade(SQLiteDatabase sqlitedatabase, int i, int j) {}
}

ということで各メソッドを実装。
//BizCardのデータベースハンドラ
class DatabaseOpenHelper extends SQLiteOpenHelper{

	//データベース名
	private static final String DB_NAME = "BIZ_CARD";

	//サンプルデータ
    private String[][] datas = new String[][]{
        {"光度 人", "××商事", "開発部", "部長","141-0031", "品川区西五反田2-19-3", "090-1111-1111", "03-1111-1111", "code@shoji.co.jp"},
        {"高度 仁", "○○コミュニケーションズ", "開発部", "課長","141-0032", "品川区大崎1-2-1", "090-2222-2222", "03-2222-2222", "code@comunications.co.jp"},
        {"光度 陣", "×○システムズ", "開発部", null,"153-0043", "目黒区東山1-2-1", "090-3333-3333", "03-3333-3333", "code@systems.co.jp"},
        {"荒土 尋", "○×工務店", "開発部", null,"160-0014", "新宿区内藤町11-4", "090-4444-4444", "03-4444-4444", "code@koumuten.co.jp"}
    };

    //コンストラクタ
	public DatabaseOpenHelper(Context context) {
		super(context, DB_NAME, null, 1);
	}

	//データベースが存在しなかった場合、データベース作成後に実行される
	@Override
	public void onCreate(SQLiteDatabase sqlitedatabase) {
		//トランザクション
		sqlitedatabase.beginTransaction();
        try{
            // テーブルの生成
            StringBuilder createSql = new StringBuilder();
            createSql.append("create table " + BizCard.TABLE_NAME + " (");
            createSql.append(BizCard.COLUMN_ID + " integer primary key autoincrement not null,");
            createSql.append(BizCard.COLUMN_PERSON_NAME + " text not null,");
            createSql.append(BizCard.COLUMN_COMPANY_NAME + " text,");
            createSql.append(BizCard.COLUMN_ORGANIZATION_NAME + " text,");
            createSql.append(BizCard.COLUMN_POSITION_NAME + " text,");
            createSql.append(BizCard.COLUMN_ZIP_CODE + " text,");
            createSql.append(BizCard.COLUMN_ADDRESS + " text,");
            createSql.append(BizCard.COLUMN_TEL1 + " text,");
            createSql.append(BizCard.COLUMN_TEL2 + " text,");
            createSql.append(BizCard.COLUMN_MAIL + " text");
            createSql.append(")");
            sqlitedatabase.execSQL( createSql.toString());
            // サンプルデータの投入
            for( String[] data: datas){
                ContentValues values = new ContentValues();
                values.put(BizCard.COLUMN_PERSON_NAME, data[ 0]);
                values.put(BizCard.COLUMN_COMPANY_NAME, data[ 1]);
                values.put(BizCard.COLUMN_ORGANIZATION_NAME, data[ 2]);
                values.put(BizCard.COLUMN_POSITION_NAME, data[ 3]);
                values.put(BizCard.COLUMN_ZIP_CODE, data[ 4]);
                values.put(BizCard.COLUMN_ADDRESS, data[ 5]);
                values.put(BizCard.COLUMN_TEL1, data[ 6]);
                values.put(BizCard.COLUMN_TEL2, data[ 7]);
                values.put(BizCard.COLUMN_MAIL, data[ 8]);
                sqlitedatabase.insert(BizCard.TABLE_NAME, null, values);
            }
            //トランザクション終了
            sqlitedatabase.setTransactionSuccessful();
        } finally {
        	//失敗
        	sqlitedatabase.endTransaction();
        }
	}

	/*
	 * SQLiteOpenHelperのコンストラクタ第四引数versionがバージョンアップした場合に実行される
	 */
	@Override
	public void onUpgrade(SQLiteDatabase sqlitedatabase, int i, int j) {}
}

初回起動時など、データベースが見つからなかった場合はonCreate()が呼ばれます。
Webアプリと違ってテーブルを予め用意しておくという運用ができないので、onCreate()ではテーブル作成等を行う必要があります。
今回はテーブルひとつだからまあいいんだが100個テーブルがあったら全部書くのかこれ?

その後現在のデータベース状態確認方法が載っていますが、まだ実行していないのでデータベースがありません。
とりあえずスルー。


Androidの記事
 

 

PR


2010/08/02 22:40 | Comments(0) | TrackBack() | Android

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<ゲームレビュー:CHAOS;HEAD らぶChu☆Chu! | HOME | 買ったものリスト 2010/08/01>>
忍者ブログ[PR]