facebook twitter hatena line email

Unity/sqlite/SQLiteUnityKit

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

sqliteライブラリ本体DL

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

SQLiteUnityKitの問題点と対応策

  • マルチバイト文字列を扱えない
  • アプリの更新時に端末内のDBが初期化される
  • トランザクション管理ができない
  • SQLにバインド処理を行えない

参考:https://fantastic-works.com/archives/406

参考:https://taiyoproject.com/post-482

プロジェクト内にsqliteライブラリ設置

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