【AndroidでSQLiteを制する】データベースのスキーマを表現するクラス
SQLiteは一つのデータベースファイルとして保存されます。 データベースファイル内には複数のテーブルがあります、テーブルにはテーブル名やカラム名が存在します。 これらの要素に対応するクラスを定義することでデータベースに関する情報を一括で管理することができます。
今回は下記のスキーマでデータベースを作成します。
データベース名 : LoadToSQLiteMaster.db
テーブル : Bookテーブル
| 論理名 | 物理名 | 型 |
|---|---|---|
| ID | _id | INTEGER |
| タイトル | title | TEXT |
| サブタイトル | subtitle | TEXT |
データベースを表現するクラスを定義する
データベース定義クラスはデータベース名とバージョン番号を持ちます。 データベース名はそのままSQLiteデータベースファイルの名前になります。 バージョン番号は、SQLiteデータベースファイル内のデータベースのバージョン番号を表します。
/**
* データベース内のスキーマを定義するクラス
*/
public final class LoadToSQLiteMasterContract {
/**
* このクラスはインスタンス化することを目的としていないため、
* privateなコンストラクタを定義する。
*/
private LoadToSQLiteMasterContract(){}
/**
* データベースを定義するクラス
*/
public static class DataBase {
/** 現在のバージョン */
public static final int DATABASE_VERSION = 1;
/** データベース名 */
public static final String DATABASE_NAME = "LoadToSQLiteMaster.db";
}
}
Bookテーブルを表現するクラスを定義する
Bookテーブル定義クラスはテーブル名・カラム名・クリエイト文・ドロップ文を定義します。
/**
* データベース内のスキーマを定義するクラス
*/
public final class LoadToSQLiteMasterContract {
/** TEXT型 */
public static final String TYPE_TEXT = " TEXT ";
/** INTEGER型 */
public static final String TYPE_INTEGER = " INTEGER ";
/** プライマリーキー */
public static final String PRIMARY_KEY = " PRIMARY KEY ";
/** カンマ */
public static final String COMMA_SEP = " , ";
/**
* このクラスはインスタンス化することを目的としていないため、
* privateなコンストラクタを定義する。
*/
private LoadToSQLiteMasterContract(){}
/**
* データベースを定義するクラス
*/
public static class DataBase {
/** 現在のバージョン */
public static final int DATABASE_VERSION = 1;
/** データベース名 */
public static final String DATABASE_NAME = "LoadToSQLiteMaster.db";
}
/**
* Bookテーブルを定義するクラス
*/
public static class Book implements BaseColumns {
/** テーブル名 */
public static final String TABLE_NAME = "book";
/** カラム名(タイトル) */
public static final String COLUMN_NAME_TITLE = "title";
/** カラム名(サブタイトル) */
public static final String COLUMN_NAME_SUBTITLE = "subtitle";
/** クリエイト文 */
public static final String SQL_CREATE_ENTRIES =
"CREATE TABLE " + TABLE_NAME + " (" +
_ID + TYPE_INTEGER + PRIMARY_KEY + COMMA_SEP +
COLUMN_NAME_TITLE + TYPE_TEXT + COMMA_SEP +
COLUMN_NAME_SUBTITLE + TYPE_TEXT +
" )";
/** ドロップ文 */
public static final String SQL_DROP_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME;
/**
* このクラスはインスタンス化することを目的としていないため、
* privateなコンストラクタを定義する。
*/
private Book(){}
}
}