Help us understand the problem. What is going on with this article?

UnityでSQLiteを扱う方法

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away