Cocos2d-x开发游戏时,有时需要存储用户游戏状态信息,例如:金币,积分等。除了引擎自带的 CCUserDefault , Xml 等来存储数据外,还可以使用Sqlite3数据库来存储数据.
首先下载使用Sqlite3所需的工具:Sqlite3
1.将下载文件中 sqlite3.h 和 sqlite3.c添加到自己的工程
2.简单写了一个对Sqlite3的封装类 SqliteManager (随个人自行更改)
SqliteManager.h
#include "sqlite3.h"
#include "cocos2d.h"
using namespace cocos2d;
using namespace std;
class SqliteManager
{
private:
sqlite3 * pdb;
string sql;
int result;
char **re;
public:
SqliteManager();
~SqliteManager();
// 创建一个数据库
void createSqliteDatebase();
// 创建表
bool createTable();
// 插入一条数据
bool insertData(const char* index,const char *name);
// 更新一条数据
bool updateData(const char* index,const char *name);
// 删除一条数据
bool deleteData(const char* index);
// 查询获取数据
const char * getdata(int index);
// 关闭数据库
void CloseDataBase();
};
SqliteManager.cpp
#include "SqliteManager.h"
//创建数据库
void SqliteManager:: createSqliteDatebase()
{
pdb =NULL;
// 1.指定数据库路径
string path=CCFileUtils::sharedFileUtils()->getWritablePath()+"audio.db3";
// 2.检查指定路径下数据库 audio.db3是否存在
bool isExist =CCFileUtils::sharedFileUtils()->isFileExist(path);
if (!isExist) {
CCLog("%s不存在",path.c_str());
}
else
{
CCLog("%s存在",path.c_str());
// 在IOS或安卓上删除该数据库
// your code .........
}
result=sqlite3_open(path.c_str(),&pdb);
if(result==SQLITE_OK)
{
CCLog("open database success, number=%d",result