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(); } }