facebook twitter hatena line email

Unity/sqlite

提供: 初心者エンジニアの簡易メモ
2019年2月27日 (水) 23:12時点におけるAdmin (トーク | 投稿記録)による版

移動: 案内検索

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

参考

https://qiita.com/hiroyuki7/items/5335e391c9ed397aee50