91
102

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UnityでSQLiteを扱う方法

Posted at

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

91
102
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
91
102

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?