首先 开始 游戏开始都会有一个 注册功能
于是 构建一个单利的 存储类
create table UserTable(UserName text,Password text,constraint PK_U primary key(UserName))
这个句的意思是 构建一个用户表 其内容为 UserName Password
constraint PK_U primary key 这句话的意思是键值唯一性
用户名不可重复
随后在构建了一个GmaeDtateTbale 表 来存储 一切数据
create table GameDataTable(UserName text,Propety text,Value integer,constraint PK_UP primary key(UserName,Propety))
constraint PK_UP primary key(UserName,Propety)
俩则不可一样
库创建步骤
if (CCFileUtils::sharedFileUtils()->isFileExist(dbPath))
判断是否存在
如果存在
sqlite3 *mydb;
char *error;
int result;
result = sqlite3_open(dbPath.c_str(), &mydb);
随后就是 顺水推舟 一切都轻松
但是 发现 效率上没有json 来的快
最好还是改json
json 炒作简单
先做一下简单的介绍
rapidjson::Document d;
//[2] 获取分配器
rapidjson::Document::AllocatorType& allocator = d.GetAllocator();
//[3] 设置为对象格式 SetObject
d.SetObject();
//[4] 添加数据
//[4.1] 往json对象中添加数据:名称/值对
rapidjson::Value object(rapidjson::kObjectType);
// 创建对象
object.AddMember(
"int"
, 1, allocator);
// 添加 "int" : 1
object.AddMember(
"double"
, 1.1, allocator);
// 添加 "double" : 1.1
object.AddMember(
"hello"
,
"world"
, allocator);
// 添加 "hello" : "world"
//[4.2] 往json数组中添加数据:值
rapidjson::Value array(rapidjson::kArrayType);
// 创建数组
rapidjson::Value str(rapidjson::kStringType);
// 字符串
rapidjson::Value obj(rapidjson::kObjectType);
// 对象
str.SetString(
"hello"
);
// 设置str的值
obj.AddMember(
"name"
,
"alice"
, allocator);
obj.AddMember(
"age"
, 23, allocator);
array.PushBack(123, allocator);
// 添加数字
array.PushBack(
"888"
, allocator);
// 添加字符串,方式一
array.PushBack(str, allocator);
// 添加字符串,方式二
array.PushBack(obj, allocator);
// 添加对象
//[4.3] 往对象格式的json文件中添加数据
d.AddMember(
"hello"
,
"world"
, allocator);
d.AddMember(
"object"
, object, allocator);
d.AddMember(
"array"
, array, allocator);
//[5] 将json数据写入文件中
StringBuffer buffer;
rapidjson::Writer<StringBuffer> writer(buffer);
d.Accept(writer);
CCLOG(
"%s"
, buffer.GetString());
FILE
* file =
fopen
(
"/soft/cocos2d-x-3.4/projects/Demo34/Resources/testJson.json"
,
"wb"
);
if
(file) {
fputs
(buffer.GetString(), file);
fclose
(file);
}
//
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
//
//[1] 读取json文件内容
std::string str = FileUtils::getInstance()->getStringFromFile(
"testJson.json"
);
CCLOG(
"%s"
, str.c_str());
//[2] 创建用于处理json代码的类
// 创建rapidjson::Document类:用于操作json代码
rapidjson::Document d;
//[3] 解析json文件内容
// 其中 rapidjson::kParseDefaultFlags = 0,默认方式
d.Parse<rapidjson::kParseDefaultFlags>(str.c_str());
// d.Parse<0>(str.c_str()); // 也可以直接写<0>
//[4] 判断解析是否出错
if
(d.HasParseError()) {
CCLOG(
"GetParseError %s\n"
,d.GetParseError());
return
;
}
//[5] 获取json中的数据
// 判断json文件是否为数组格式
if
(d.IsArray()) {
rapidjson::Value& array = d;
for
(
int
i = 0; i < array.Size(); i++) {
if
(d[i].IsBool()) {
// 逻辑值
CCLOG(
"%d is Bool : %d"
, i, array[i].GetBool());
}
if
(d[i].IsNumber()) {
// 数字
CCLOG(
"%d is Number : %d"
, i, array[i].GetInt());
}
if
(d[i].IsString()) {
// 字符串
CCLOG(
"%d is String : %s"
, i, array[i].GetString());
}
if
(d[i].IsObject()) {
// 对象
rapidjson::Value& object = d[i];
CCLOG(
"%d is Object : %s"
, i, array[i][
"name"
].GetString());
CCLOG(
"%d is Object : %d"
, i, object[
"age"
].GetInt());
}
if
(d[i].IsArray()) {
// 数组
for
(
int
j = 0; j < array[i].Size(); j++) {
CCLOG(
"[%d,%d] is Array : %d"
, i, j, array[i][j].GetInt());
}
}
}
}
|