データの永続性を確保する際に、今まではUserDefaultクラスを利用してきました。 ただ、cocos2dxでは、それ以外にも方法があります。それが[SQLite]を利用する方法です。 今回は、この[SQLite]についてブログに書いていきたいと思います。
利用準備
SQLiteを利用する際に必要なことは以下の通りです。
SQLiteをダウンロードする
まずはサイトから、SQliteをダウンロードして下さい SQLite Download Page
プロジェクトに追加する
必要なファイルは以下の3つです。
- sqlite3.c
- sqlite3.h
- sqlite3ext.h
ヘッダーで読み込む
後は利用する際に、ヘッダーを読み込みます。 [c]
include "sqlite3.h"
[/c]
Android側の設定
sqliteを読み込めるようにAndroid.mkを変更します。 [c] LOCAL_SRC_FILES +=../../Classes/sqlite3.c [/c]
実際に利用する
コードは非常に長いので、GitHubを利用します。 こちらを参考にして下さい。 GitHub : albatrus/SQLite_cocos2dx
元のコードは、「Cocos2d‐xレシピ本」を参考にしています。
SaveSQLクラスの利用準備
まず、ファイルをプロジェクトに追加をして下さい。
その後、ヘッダーで必要な場所で読み込んで下さい。
[c]
include "SaveSQL.h"
[/c]
利用する
SaveSQLクラスでは、以下のことが可能です。データベースの作成
まずは、データベースを作成します。 [c] SaveSQL::sqliteCreateTable(); [/c]データベース名が[sample.db]、テーブル名が[test1]のデータベースが作成されます。 この、データベース名やテーブル名は好きに変更して下さい。
データベースに値を入力する
作成されたデータベースのテーブルに値を入れていきます。 今回作成しているテーブルは、[key][value]の2つの値があります。 [c] //前がkey ,後ろがvalueです SaveSQL::sqliteSetValueForKey("key1", "hopehoge"); SaveSQL::sqliteSetValueForKey("key2", "albatrus"); SaveSQL::sqliteSetValueForKey("key3", "cocos2dx"); [/c]このようにデータベースに値を設定していきます。
データベースに値を更新する
すでに設定されている[key]の[value]を更新するには、sqliteUpdateValueForKey()を利用します。 [c] //前がkey ,後ろがvalueです SaveSQL::sqliteUpdateValueForKey("key", "changehogehoge"); [/c]データベースに値を取り出します
[key]に対応する[value]を取り出します。 [c] //[key]を指定して下さい。 const char *hoge = SaveSQL::sqliteGetValueForKey("key1"); CCLOG("key2の値 : %s",hoge); [/c]最後に
私は、これまでデータベースを触ったことがないですが、iOS/Android共に実機でデータ保存・読み込みができているので大丈夫だと思います。 ただ、実際に利用するにはSQLの構文をもっと勉強しないといけないと感じました。この構文です。 [c] //テーブル作成 const char sql_createtable = "CREATE TABLE test1(key TEXT,value TEXT)"; //データ作成 const char sql_select = "REPLACE INTO test1(key,value)VALUES(?,?)"; //keyに対するvalueの取り出し const char *sql_select = "SELECT value FROM test1 WHERE key=?"; [/c]
今後、私がやりたい事は、複数のデータを管理していくことです。 UserDefaultクラスでは、keyに対して1つのデータしか管理ができないからです。 データの読み込み速度や、実際にそれができるかはまだ確認できていませんので、この辺りを上手くやっていきたいと思っています。
後、「Cocos2d-xでiPhone&Androidアプリ開発記7 SQLiteの注意点」というエントリーがとても気なっているのですが、今のところ問題が出てないので大丈夫なのかな。 もし、SQLに関して良い方法、またコードが間違っているなどありましたら、ぜひ連絡をいただけると嬉しいです。
Cocos2d‐x開発のレシピ―iOS/Android対応 松浦 晃洋,齊藤 建二,古木 映治 秀和システム 売り上げランキング : 53292 Amazonで詳しく見る |