UnityでSqliteを自動化 ~データ更新編~
テーブルクラス作成編の続きになると思います。
UnityでSqliteを自動化 ~テーブルクラス作成編~ - 湯呑み茶碗の開発日記
今回はデータ更新編です。
データベースに対して登録、更新、削除を行っていきます。
データベース周りの操作を行っている
データ登録
データの新規登録を行っている部分に着目していきます。着目するといっても「CharacterId」を採番して登録を行っているだけです。
/// <summary>
/// Insert Example
/// キャラクターデータを登録
/// </summary>
/// <param name="characterData"></param>
public static void InsertCharacterData(CharacterData characterData)
{
DataAccess.Instance.Init(typeof(CharacterData));
// Create Numbering CharacterId
// CharacterIdを採番
characterData.CharacterId = DataAccess.Instance.GetAssignNumber("CharacterId");
// Insert SQL will be issued on the basis of the argument
// 引数に基づきインサートSQL発行
DataAccess.Instance.Insert(characterData);
}
そして実行されたSqlite文がこちら。
データ更新
データの更新を行っている部分に着目し(略)
といってもプライマリキーで更新条件を自動生成しているだけです。
一応、自分で条件を指定することもできます。何も条件を指定していない場合のみ、指定した条件で更新を行います。
条件の指定方法はこちら。データ取得編で条件を指定する方法を紹介しています。
UnityでSqliteを自動化 ~データ取得条件指定編~ - 湯呑み茶碗の開発日記
/// <summary>
/// Update Example
/// キャラクターデータを更新
/// </summary>
/// <param name="characterData"></param>
public static void UpdateCharacterData(CharacterData characterData)
{
// Init
DataAccess.Instance.Init(typeof(CharacterData));
// Update SQL is issued on the basis of the argument . (NULL values are not updated .)
// 引数に基づきアップデートSQL発行。NULL値は更新されません。
DataAccess.Instance.UpdateSql(characterData);
}
そして実行されたSqlite文がこちら。
データ削除
データの削除を行っている部分に(略)
データ更新と同じく条件を指定できます。仕様は更新と同じです。
/// <summary>
/// Delete Example
/// キャラクターデータを削除
/// </summary>
/// <param name="characterData"></param>
public static void DeleteCharacterData(CharacterData characterData)
{
// Init
DataAccess.Instance.Init(typeof(CharacterData));
// Issue the Delete SQL based on the arguments .
// 引数に基づきデリートSQL発行
DataAccess.Instance.Delete(characterData);
}
そして実行されたSqlite文がこちら。
データ削除不可
あまりこういった実装を見かけることはありませんが、テーブルクラスに「DeleteImpossible」属性を設定するとデータの削除を絶対にしないテーブルクラスを作成することができます。
/// <summary>
/// Table class of MasterTable . Deletion of the data can not be
/// MasterTableのテーブルクラス。 データの削除はできません
/// </summary>
[DataAccess("MasterTable")]
[DeleteImpossible]
public class MasterData : TableBase
{
[DataProperty(3, DataPropertyAttribute.SQLITE_TYPE.TEXT, false, true)]
public string MasterId { get; set; }
[DataProperty(32, DataPropertyAttribute.SQLITE_TYPE.TEXT, false, true)]
public string MasterCategory { get; set; }
[DataProperty(64, DataPropertyAttribute.SQLITE_TYPE.TEXT, false, false)]
public string MasterName { get; set; }
[DataProperty(3, DataPropertyAttribute.SQLITE_TYPE.NUMERIC, false, false)]
public int Seq { get; set; }
[DataProperty(512, DataPropertyAttribute.SQLITE_TYPE.TEXT, true, false)]
public string Remarks { get; set; }
}
/// <summary>
/// Delete Master Data . Ensure that the data is not deleted
/// マスターデータを削除。削除されないこを確認。
/// </summary>
/// <param name="masterData"></param>
public static void DeleteMasterData(MasterData masterData)
{
DataAccess.Instance.Init(typeof(MasterData));
// Please check the log that was not deleted .
// 削除されないことをログで確認してください。
DataAccess.Instance.Delete(masterData)
}
ログを確認すると削除されていないことが確認できます。
データ更新編はここまでになります。
これでこのライブラリについての紹介はたぶん終わりです。
使っていて使いにくい部分等あると思いますが、そこは自分自身の手で改修してみてください。
要望があったらとも思いましたが、そもそもこのブログを見ている人がいるかどうか...
関数の使い方をまとめようと思いましたが、いつかはやると思います。いつかは...
終わり