Unity/sqlite
提供: 初心者エンジニアの簡易メモ
目次
sqlliteライブラリ本体DL
git clone https://github.com/Busta117/SQLiteUnityKit.git
SQLiteUnityKitの問題点
- マルチバイト文字列を扱えない
- アプリの更新時に端末内のDBが初期化される
- トランザクション管理ができない
- SQLにバインド処理を行えない
参考:https://fantastic-works.com/archives/406
プロジェクト内にsqlliteライブラリ設置
Sqliteを入れたいUnityプロジェクトのAssetsの下で実行
SqlProjectをプロジェクトの例として行く。
mkdir -p SqlProject/Assets/Plugin/Android/ mkdir -p SqlProject/Assets/Script/ mv SQLiteUnityKit/libsqlite3.so SqlProject/Assets/Plugin/Android/ mv SQLiteUnityKit/SqliteDatabase.cs SqlProject/Assets/Script/ mv SQLiteUnityKit/README.md SqlProject/Assets/SqlREADME.md mv SQLiteUnityKit/DataTable.cs SqlProject/Assets/Script/
DBようディレクトリをプロジェクト内に設置
mkdir SqlProject/Assets/StreamingAssets
この名前にしておくとエンコードなどされなくなる。
dbファイル作成
cd SqlProject/Assets/StreamingAssets sqlite3 config.db create table users(id integer, name text, age integer); .exit
dbへアクセス
User.cs
using UnityEngine; using System.Collections; public class User { // Use this for initialization public void Insert() { // Insert SqliteDatabase sqlDB = new SqliteDatabase("config.db"); string query = "insert into users values(1, 'taro', 25)"; sqlDB.ExecuteNonQuery(query); } public void FindAll() { SqliteDatabase sqlDB = new SqliteDatabase("sample.db"); // Select string selectQuery = "select * from users"; DataTable dataTable = sqlDB.ExecuteQuery(selectQuery); foreach(DataRow dr in dataTable.Rows){ Debug.Log("id:" + dr["id"].ToString()); Debug.Log("name:" + (string)dr["name"]); Debug.Log("age:" + dr["age"].ToString()); } } }
Main.cs
User user = new User(); user.Insert(); user.FindAll();
参考
UnityでSQLiteを扱う方法 https://qiita.com/hiroyuki7/items/5335e391c9ed397aee50