Androidアプリケーションでのデータベース基礎
前回でレイアウトが作成できましたので、今回はデータベースを作成してアプリケーションに組み込んでいきましょう。
対象読者
本連載はJavaおよびEclipseの基本を理解している方を対象としています。
前回までの記事
Androidで利用するSQLiteのクラス
AndroidではSQLiteがサポートされており、下記の2つのクラスを使うだけで、簡単に利用できます。
SQLiteOpenHelper
データベースの生成、スキーマのバージョン管理を行うための抽象クラスです。こちらのクラスを継承してデータベースの生成、アップグレード処理を実装します。
SQLiteDatabase
insert、updateなどデータベースに対する各種操作用のメソッドを提供するクラスです。
前回同様、今回の作業を行った状態のプロジェクトがこちらからダウンロードできますので、迷った場合は参考にしてください。
SQLiteはデータの保存に単一ファイルのみを使用する軽量のRDBMSです。アプリケーションに含む形で利用される場合が多く、iPhoneでもSQLiteが利用されています。データ型もシンプルで下記の5種類のみに対応しています。
- INTEGER・・・符号付整数
- REAL・・・浮動小数点
- TEXT・・・テキスト
- BLOB・・・バイナリデータ
- NULL・・・NULL
事前準備
データベースの作成に入る前に、ソースのさまざまな所にSQLやカラム名が埋まってしまうのを防ぐため、1レコード分のデータを保持するクラスを準備しましょう。なお、データベース関連のソースは「sample.bizcard.db」パッケージに作成しています。
package sample.bizcard.db;
import java.io.Serializable;
/**
* 1レコードのデータを保持するオブジェクト
* Intentに詰めてやり取りするのでSerializableをimplementsする
*/
@SuppressWarnings("serial")
public class BizCard implements Serializable{
// テーブル名
public static final String TABLE_NAME = "biz_card";
// カラム名
public static final String COLUMN_ID = "_id";
public static final String COLUMN_PERSON_NAME = "person_name";
public static final String COLUMN_COMPANY_NAME = "company_name";
public static final String COLUMN_ORGANIZATION_NAME = "organization_name";
public static final String COLUMN_POSITION_NAME = "position_name";
public static final String COLUMN_ZIP_CODE = "zip_code";
public static final String COLUMN_ADDRESS = "address";
public static final String COLUMN_TEL1 = "tel1";
public static final String COLUMN_TEL2 = "tel2";
public static final String COLUMN_MAIL = "mail";
// プロパティ
private Long rowid = null;
private String personName = null;
private String organizationName = null;
private String companyName = null;
private String positionName = null;
private String zipCode = null;
private String address = null;
private String tel1 = null;
private String tel2 = null;
private String mail = null;
:
:中略(getter/setter)
:
/**
* ListView表示の際に利用するのでユーザ名+会社名を返す
*/
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append( getPersonName());
if( getCompanyName() != null){
builder.append(":");
builder.append(getCompanyName());
}
return builder.toString();
}
}
