Posted at

UnityにSQLiteを導入する

More than 1 year has passed since last update.

UnityにSQLiteUnityKitを導入テストしてみたのでメモしました。

動作環境

Unity 5.5.3p3

MacOS 10.12.6


準備

SQLiteを導入する際に便利だったアプリケーションを記載します。

DB Browser for SQLite

SQLiteのテーブルを編集、確認する事が出来ます。

コマンドが苦手な方にオススメです。

DB Browser for SQLiteページ


SQLiteUnityKitを取得

GitHubページよりSQLiteを取得します。

GitHub Busta117/SQLiteUnityKit

スクリーンショット 2017-09-12 10.51.11.png

ターミナルを開いて以下のコマンドで取得

$ git clone https://github.com/Busta117/SQLiteUnityKit.git


データベースファイル作成

ダウンロード完了後はターミナルよりデータベースファイルを作成します。

テーブル作成と値の挿入まで行います。

// プロジェクト内の階層に遷移

$ cd Assets/StreamingAssets/

// 好きなテーブル名でOK!
$ sqlite3 default.db
SQLite version 3.20.1 2017-08-24 16:21:36
Enter ".help" for usage hints.

// テーブル作成
sqlite> create table example (
...> name string,
...> dummy int
...> );

// テーブルに値を挿入
sqlite> insert into example values ("hello world", 1);

// 終了
sqlite> .q


プロジェクトにフォルダ作成

取得したSQLiteを配置するフォルダを作成します。

以下はサンプルです。

スクリーンショット 2017-09-12 11.05.27.png

Android

AndroidのPluginを入れるフォルダ

SQLite

Scriptsフォルダをキレイにする為にSQLite関連のファイルはここにまとめる

StreamingAssets

このフォルダに入れる事でアプリに直接配置されます。


SQLiteファイルと作成したDBをフォルダに入れる

先程作成したフォルダに配置します。

以下はサンプルです。

スクリーンショット 2017-09-12 11.13.50.png


スクリプトからデータベースを読み込む

次はスクリプトから作成したデータベースの値を読み込むテストをします。

データベースから値を取り出してLogを表示


SampleDataBase.cs

using UnityEngine;

using System.Collections.Generic;

public class SampleDataBase : MonoBehaviour {

public SqliteDatabase sqlDB;

void Start(){
     sqlDB = new SqliteDatabase("default.db");
     string query = "SELECT * FROM example";
     var dt = sqlDB.ExecuteQuery(query);

string name;
int dummy;
foreach(DataRow dr in dt.Rows){
name = (string)dr["name"];
dummy = (int)dr["dummy"];
Debug.Log("name:" + name.ToString());
Debug.Log("dummy:" + dummy);
}
}
}


ソースコードをGameObjectにアタッチして実行すると正しく値が取れました。

スクリーンショット 2017-09-12 13.22.54.png


データベースを直接編集しても反映されない時

実装後 DB Browser for SQLiteを使用してStreamingAssets内のデータベースを更新しましたが正しく反映出来ませんでした。

以下フォルダ付近を確認すると複製されたデータベースがあり修正または削除して再複製すると正しく反映されました。

/Users/user_name/Library/Application Support/company_name


参考ページ

Quickstart for SQLite in Unity

[Unity]SQLiteUnityKitに差分アップデート実装してみた