UnityでSQLiteを扱う方法

  • 65
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

iOSやAndroidではApplication内にデータを保存する方法として、SQLiteが使われています。

少ないデータであれば、PlayerPrefsを使用するだけで十分ですが、大量のデータを扱う場合にSQLiteを使えると便利です。

また、SQLiteは他の開発言語でも使えるので、Objective-CやJavaでの開発する場合でもデータはそのまま使用できるので汎用性に優れています。

今回はSQLiteが予めインストールされているMacで試しました。
* OS X 10.9.5
* SQLite 3.7.13

SQLiteUnityKitをgithubから取得する

今回、UnityでSQLiteを使う方法として、GithubにあるSQLiteUnityKitを使用します。

Busta117/SQLiteUnityKit · GitHub

SQLiteUnityKitを取得します。ターミナルからgitでクローンします。

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

プロジェクトにSQLiteUnityKitを配置する

プロジェクトにSQLiteUnityKitを取り込みますが、そのままの配置ではなく、下記の図のように配置します。

unity2015-03-06_16_05_17.png

StreamingAssetsフォルダを作成する

プロジェクトに「StreamingAssets」フォルダを作成します。StreamingAssetsファイルをそのままアプリに持っていけるフォルダです。
このフォルダにSQLiteのデータベースファイルを入れることで、そのままアプリに配置されます(ビルドしたときにエンコードなど余分な変換がされない)。

Unity - マニュアル: ストリーミングアセット

SQLiteデータベースファイルを作成する

今回は既にあるSQLiteデータベースファイルからUnityから取り出す方法を説明します。

なので、まずはターミナルからSQLiteを使用して、データベースファイルを作成します。

// StreamingAssetsフォルダに移動する
$ cd ~/Unity/SQLiteSample/Assets/StreamingAssets

// データベースファイル「config.db」を作成します
$ sqlite3 config.db
SQLite version 3.7.13 2012-07-17 17:46:21
Enter ".help" for instructions
Enter SQL statements terminated with a ";"

// userというテーブルを作成します
sqlite> create table user(id integer, name text, old integer, address text);
sqlite> .q

スプリクトを作成する

次にスクリプトを作成して、データベースからデータを追加・取得します。
スクリプト名は「Database.cs」とします。

using UnityEngine;
using System.Collections;

public class Database : MonoBehaviour {

    // Use this for initialization
    void Start () {
        // Insert
        SqliteDatabase sqlDB = new SqliteDatabase("config.db");
        string query = "insert into user values(1, 'Yamada', 19, 'Tokyo')";
        sqlDB.ExecuteNonQuery(query);

        // Select
        string selectQuery = "select * from user";
        DataTable dataTable = sqlDB.ExecuteQuery(selectQuery);

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

    // Update is called once per frame
    void Update () {

    }
}

スプリクトをシーン上のゲームオブジェクトに追加します。ここでは「DatabaseObject」に追加しました。

unity2015-03-15 10.37.48.png

実行する

Playボタンを押して、実行すると、Consoleビューに指定したデータを取得できたことを確認してください。

unity2015-03-15 10.42.10.png

参考サイト

UnityでSQLite
Unity SQLiteUnityKitで日本語を使うときの注意