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
- https://www.sqlite.org/download.htmlkからSQLiteのDLLをダウンロードする。「Windows用プリコンパイル済みバイナリ」の項目内 64ビットDLLのzipファイルをダウンロードして解凍します
- Plaginsフォルダにx86_64のフォルダを作る
- 解凍してできた64ビットDLLをx86_64フォルダに移動する(コピー)
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;
}