SimpleSQLを使ってみる

UnityでSQLiteなどのDB使うときに便利なのがSimpleSQLです。

SimpleSQLは40ドルの有料アセットです。

simplesql


UnityでSQLを利用するには他にもアセットがあるのですが、安定しているということで利用しています。

Simplesqlは機能が多く、データの修正方法も幾通りあるので詳しくはマニュアルを御覧ください
simpleSQLを利用する手順としてはかきのようになります。

  • アセットのインストール
  • データベース作成
  • データベースのテーブルの定義をクラス化
  • データベースマネージャー作成
  • 各種操作



アセットのインストール


アセットのインストールでは下記のようにDLLを2つ読み込ませればOKです。

simplesql


データベース作成


データベースはSQLiteですので、アセットからだけではなく、他のツールで作成したファイルでも利用できます。
その際、拡張子が .bytes にする必要があるので注意が必要です。

今回は DB Browser for SQLite を利用しています。

dbbrowser

作成したテーブル

dbbrowser
テーブル名 testTable
INTEGER  intCol1
TEXT textCol1

ファイルはunityのAssetsにでもいれておけばいいです。
拡張子は .bytes



アセット側から作成するなら下記のように空のDBが作成できます。

simplesql



データベースのテーブルの定義をクラス化


simpleSQLでは各テーブルをクラスで管理しますので事前に作っておきます。

using SimpleSQL;

public class testTable
{
    [PrimaryKey]
    public int intCol1 { get; set; }

    public string textCol1 { get; set; }

}


データベースマネージャー作成


simpleSQLをUnityから使うにはデータベースマネージャーを介して行います。

データベースマネージャーはSimplesqlのツールから作成します。

simplesql

マネージャーを作成したらDBファイルをリンクさせておきます。 simplesql
Debug TraceにチェックをいれておけばコンソールにSQLが表示されるので便利です。

各種操作


今回は各ボタンにDBデータ読み込み、UPDATE,INSERT,DELETEを設定しています。

Simplesqlでデータベースを操作するスクリプトでは下記の手順で行います。

  • dbマネージャー登録
  • Sql作成
  • dbマネージャーで発行
  • 結果を受け取る


下記の例はSQLで行をLISTで取得しています。

 //データ全取得
string sql = "SELECT * FROM testTable";
List testTableA = dbManager.Query(sql);

また、UPDATEについては定義したクラスを用いて更新することになります。

//テーブル取得
string sql = "SELECT * FROM testTable where intCol1 = 10000";
List testtable1 = dbManager.Query(sql);

//データ書き換え
testtable1[0].textCol1 = "テスト11";
dbManager.UpdateTable(testtable1[0]);

Insert

 //データ作成
testTable nt1 = new testTable();
nt1.intCol1 = 30000;
nt1.textCol1 = "テスト50000";

//データ追加
dbManager.Insert(nt1);

DELETE

//テーブル取得
string sql = "SELECT * FROM testTable";
List testtableA = dbManager.Query(sql);

//行削除
dbManager.Delete(testtableA[2]);


クラスさえ使えば、データベースを意識することなく利用できるので大変便利です。



注意点

データベースマネージャーでは各種オプションがあります。

simplesql

Debug Traceはコンソールに実行されたSQLが表示されるオプションです。


ChangeWorkingNameはSimpleSQLがデータベースファイルを扱う際、指定したネームスペースで扱える機能です。
Simplesqlではアセットにあるデータベースファイルをコピーして利用するので扱いやすいようにネームスペースを変えられます。

Overwrite If Existsは注意が必要です。

Simplesqlではアセットのデータベースファイルをコピーして利用するのですが、すでにコピーされたデータベースがあればアセットのデータベースファイルを利用しません。
Unity側で変更されたデータベースはアセットのデータベースに反映されないので注意が必要です。
このオプションはUnity側でコピーしてあるデータベースがあったとしてもアプリが起動するたびに上書きして利用するオプションです。


実際のデータベースはここに設定されているようです。


simplesql

私の場合(MAC)も下記にありました。 simplesql