LoginSignup
30
27

More than 5 years have passed since last update.

UnityにSQLiteを導入する

Posted at

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に差分アップデート実装してみた

30
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
27