【cocos2dx】SQLiteを利用したデータ管理(保存、読み込み)

【cocos2dx】SQLiteを利用したデータ管理(保存、読み込み)
   

データの永続性を確保する際に、今まではUserDefaultクラスを利用してきました。
ただ、cocos2dxでは、それ以外にも方法があります。それが[SQLite]を利用する方法です。
今回は、この[SQLite]についてブログに書いていきたいと思います。

利用準備

SQLiteを利用する際に必要なことは以下の通りです。

SQLiteをダウンロードする

まずはサイトから、SQliteをダウンロードして下さい
SQLite Download Page

プロジェクトに追加する

必要なファイルは以下の3つです。
  • sqlite3.c
  • sqlite3.h
  • sqlite3ext.h
2014-6-10-hgdfd

ヘッダーで読み込む

後は利用する際に、ヘッダーを読み込みます。
#include "sqlite3.h"


Android側の設定

sqliteを読み込めるようにAndroid.mkを変更します。
LOCAL_SRC_FILES +=../../Classes/sqlite3.c

実際に利用する

コードは非常に長いので、GitHubを利用します。
こちらを参考にして下さい。
GitHub : albatrus/SQLite_cocos2dx

元のコードは、「Cocos2d‐xレシピ本」を参考にしています。

SaveSQLクラスの利用準備

まず、ファイルをプロジェクトに追加をして下さい。
その後、ヘッダーで必要な場所で読み込んで下さい。
#include "SaveSQL.h"

利用する

SaveSQLクラスでは、以下のことが可能です。
  • データベースの作成
  • [key][value]の設定
  • [value]の変更
  • [value]の取り出し

データベースの作成

まずは、データベースを作成します。
SaveSQL::sqliteCreateTable();

データベース名が[sample.db]、テーブル名が[test1]のデータベースが作成されます。
この、データベース名やテーブル名は好きに変更して下さい。

データベースに値を入力する

作成されたデータベースのテーブルに値を入れていきます。
今回作成しているテーブルは、[key][value]の2つの値があります。
//前がkey ,後ろがvalueです
SaveSQL::sqliteSetValueForKey("key1", "hopehoge");
SaveSQL::sqliteSetValueForKey("key2", "albatrus");
SaveSQL::sqliteSetValueForKey("key3", "cocos2dx");

このようにデータベースに値を設定していきます。

データベースに値を更新する

すでに設定されている[key][value]を更新するには、sqliteUpdateValueForKey()を利用します。
//前がkey ,後ろがvalueです
 SaveSQL::sqliteUpdateValueForKey("key", "changehogehoge");


データベースに値を取り出します

[key]に対応する[value]を取り出します。
//[key]を指定して下さい。
const char *hoge = SaveSQL::sqliteGetValueForKey("key1");
CCLOG("key2の値 : %s",hoge);

最後に

私は、これまでデータベースを触ったことがないですが、iOS/Android共に実機でデータ保存・読み込みができているので大丈夫だと思います。
ただ、実際に利用するにはSQLの構文をもっと勉強しないといけないと感じました。

この構文です。
//テーブル作成
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=?";

今後、私がやりたい事は、複数のデータを管理していくことです。
UserDefaultクラスでは、keyに対して1つのデータしか管理ができないからです。
データの読み込み速度や、実際にそれができるかはまだ確認できていませんので、この辺りを上手くやっていきたいと思っています。

後、「Cocos2d-xでiPhone&Androidアプリ開発記7 SQLiteの注意点」というエントリーがとても気なっているのですが、今のところ問題が出てないので大丈夫なのかな。
もし、SQLに関して良い方法、またコードが間違っているなどありましたら、ぜひ連絡をいただけると嬉しいです。



Cocos2d‐x開発のレシピ―iOS/Android対応Cocos2d‐x開発のレシピ―iOS/Android対応
松浦 晃洋,齊藤 建二,古木 映治

秀和システム
売り上げランキング : 53292

Amazonで詳しく見る

Related Posts Plugin for WordPress, Blogger...