UnityでSqliteを自動化 ~テーブルクラス作成編~
この記事の続きです。
UnityでSqliteを簡単実行 ~準備編~ - 湯呑み茶碗の開発日記
今回はテーブルクラスの作成規則について紹介していきます。
DataAccess属性について
DataAccess属性は作成したテーブルクラスに設定してください。
DataAccessのプロパティは以下のようになっています。
- TableName ・・・ 接続するテーブル名
実装例
/// <summary>
/// Table class of CharacterTable
/// CharacterTableのテーブルクラス
/// </summary>
[DataAccess("CharacterTable")]
public class CharacterData : TableBase
{
// 各プロパティを実装
}
継承しているTableBase について
TableBaseは更新日、作成日のプロパティを持っています。これはテーブルクラスを実装する場合に必ず継承してください。
テーブルを作成する場合も必ず更新日、作成日を実装してください。
/// <summary>
/// テーブルのベースクラス
/// Base class of table
/// </summary>
public class TableBase
{
[DataProperty(15, DataPropertyAttribute.SQLITE_TYPE.DATETIME, false, true)]
public DateTime CreateDate { get; set; }
[DataProperty(15, DataPropertyAttribute.SQLITE_TYPE.DATETIME, false, true)]
public DateTime UpdateDate { get; set; }
}
テーブルクラスに実装するプロパティについて
テーブルクラスに実装するプロパティの名前は、データベースに実装されている列名と同じ名前で実装してください。
画像と合わせた実装例←雑すぎ
DataProperty属性について
DataProperty属性はテーブルクラスに実装されているプロパティに設定してください。
設定されていない場合はデータベースのテーブルに実装されていないプロパティとなります。
DataPropertyのプロパティは以下のようになっています。
- MaxLength ・・・ プロパティで持てる最大文字数。
- SqliteType ・・・ データベースで実装している型に対応する列挙値。
- NullOk ・・・ データベースでNULL値を許可するかどうか。
- IsPrimaryKey ・・・ プライマリキー設定であるかどうか。
実装例
// プライマリキーを設定する場合。
[DataProperty(5, DataPropertyAttribute.SQLITE_TYPE.TEXT, false, true)]
public string CharacterId { get; set; }
// テキストを実装する場合
[DataProperty(128, DataPropertyAttribute.SQLITE_TYPE.TEXT, false, false)]
public string Name { get; set; }
// 数値型(int,float,double等)を実装する場合
[DataProperty(6, DataPropertyAttribute.SQLITE_TYPE.NUMERIC, false, false)]
public int Hp { get; set; }
// 日付を実装する場合
[DataProperty(15, DataPropertyAttribute.SQLITE_TYPE.DATETIME, false, true)]
public DateTime UpdateDate { get; set; }
// bool型を実装する場合
[DataProperty(1, DataPropertyAttribute.SQLITE_TYPE.BOOLEAN, false, false)]
public bool ClearFlg { get; set; }
// List<string>を実装する場合。多分滅多にないと思います。
[DataProperty(16, DataPropertyAttribute.SQLITE_TYPE.ARRAY, false, false)]
public List<string> IdList { get { return _ItemIdList; } set { _ItemIdList = value; } }
public List<string> _IdList = new List<string>();
これらを踏まえて実装されているクラスが「SqliteComponent」フォルダにあります。
わからなかった場合は「SqliteComponent」フォルダのサンプルクラスを見よう見まねで試してみてください。