Unity SQLite

SQLiteの導入

SQLiteUnityKitの取得

SqlLiteUnityKit

  • https://github.com/Busta117/SQLiteUnityKitからSQLiteUnityKitをダウンロードする。ダウンロードしたzipファイルを解凍する
  • AssetsフォルダにPlagins/Android/フォルダを作成する
  • 解凍してできたlibsqlite3.soファイルをAssets/Plagins/Android/ に移動する(コピー)する
  • libsqlite3.soのInspector内のAndroid SettingタブのLoad on startupをチェックする
  • AssetsフォルダにPlagins/SQLiteフォルダを作成する
  • 解凍してできたDataTable.csとSqliteDatabase.csファイルをAssets/Plagins/SQLiteに移動する(コピー)する

sqlite3.dll

PuPSQLiteのインストール

SQLite用のGUIクライアント インストール先
https://forest.watch.impress.co.jp/library/software/pupsqlite/

Aseets\StreamingAssetsフォルダを作成する
データベースファイルを作成してAssets/StreamingAssetsフォルダに入れる

SQLiteとの接続

データベース名 : TestDB.db
Column : time

        SqliteDatabase sqlDB = new SqliteDatabase("TestDB.db");

        // INSERT
        string query = string.Format("insert into Table1 values('{0}')", DateTime.Now.ToLongTimeString());
        sqlDB.ExecuteNonQuery(query);

        // SELECT
        query = "select * from Table1";
        DataTable dataTable = sqlDB.ExecuteQuery(query);

        // Linq
        text2.text = (string)dataTable.Rows.Select(x => x["time"]).LastOrDefault();

        // foreach
        foreach (DataRow dr in dataTable.Rows)
        {
            Debug.Log((string)dr["time"]);
        }

SQLiteUnityKitで日本語を扱えるようにする

SqliteDatabase.cs の private IntPtr Prepare (string query){}を以下のように置き換える

private IntPtr Prepare (string query)
	{
        IntPtr stmHandle;

        // queryのバイト数取得
        int byteCount = System.Text.Encoding.GetEncoding("UTF-8").GetByteCount(query);
        if (sqlite3_prepare_v2(_connection, query, byteCount, out stmHandle, IntPtr.Zero) != SQLITE_OK)
        {
            IntPtr errorMsg = sqlite3_errmsg(_connection);
            throw new SqliteException(Marshal.PtrToStringAnsi(errorMsg));
        }

        return stmHandle;
    }

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください