Posted at

UnityでSQLiteを扱う方法

More than 3 years have passed since last update.

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で日本語を使うときの注意