湯呑み茶碗の開発日記

WEBシステム屋の私がUnityの趣味開発で得た技術等をブログに載せていきます。

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; }
}
 テーブルクラスに実装するプロパティについて

テーブルクラスに実装するプロパティの名前は、データベースに実装されている列名と同じ名前で実装してください。

画像と合わせた実装例←雑すぎ

f:id:yunomichawan:20160912001729p:plain

 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」フォルダのサンプルクラスを見よう見まねで試してみてください。