データベースハンドラを作成します。
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
トラックバック
トラックバックURL: